Board logo

主題: [求助] 組合語言指令 [打印本頁]

發表人: bonjacky    時間: 2006-7-31 07:22 PM     主題: 組合語言指令

請問在 MASM 裡使用
XOR EAX,EAX 及MOV EAX,0
有什麼差別??
從結果來看,兩個結果相同
就可讀性來看,MOV EAX,0 比較直覺
可是經常看到別人使用 XOR EAX,EAX
是因為 XOR EAX,EAX 比較快還是 CODE SIZE 較小??
發表人: ianchang999    時間: 2006-7-31 10:11 PM

mov ebx,0
\xbb\x00\x00\x00\x00

xor ebx,ebx
\x31\xdb
顯然長度是有差別的.......
但是在shellcode寫作方面是為了規避Null所導致以Null作結尾的函式因Null中斷,而無法把完整的shellcode寫到記憶體裡面.......如strcpy
發表人: bonjacky    時間: 2006-7-31 11:31 PM

原來如此
請問這機械碼要如何看的??
光看 obj 檔似乎有點抽象
發表人: ianchang999    時間: 2006-8-1 06:56 AM

可以用debugger or disassember看喔
發表人: alexanita    時間: 2006-8-1 04:21 PM

好久沒有看到有人討論這個了,

XOR EAX,EAX

MOV EAX,0

應該是說XOR在機器碼跟處理速度上較為簡潔
MOV耗的資源跟步驟會比較多
這都是以CPU指令動作而言

但是後來常常都會因為cpu跟compiler的最佳化技術而忽略這些小細節
這是後話...

發表人: saltire    時間: 2006-8-4 09:14 AM

BIOS幾乎都是用XOR EAX,EAX來做清除動作
雖然兩種寫法都可以歸0
但是AND OR XOR等指令是最基本的
像MOV 加減乘除 等這些搬移指令當然會使用較多時脈




歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0