saltire
|
發表於 2006-8-4 09:14 AM |
BIOS幾乎都是用XOR EAX,EAX來做清除動作
雖然兩種寫法都可以歸0
但是AND OR XOR等指令是最基本的
像MOV 加減乘除 等這些搬移指令當然會使用較多時脈
| |
alexanita
|
發表於 2006-8-1 04:21 PM |
好久沒有看到有人討論這個了,
XOR EAX,EAX
及
MOV EAX,0
應該是說XOR在機器碼跟處理速度上較為簡潔
MOV耗的資源跟步驟會比較多
這都是以CPU指令動作而言
但是後來常常都會因為cpu跟compiler的最佳化技術而忽略這些小細節
這是後話...
| |
ianchang999
|
發表於 2006-8-1 06:56 AM |
可以用debugger or disassember看喔
| |
bonjacky
|
發表於 2006-7-31 11:31 PM |
原來如此
請問這機械碼要如何看的??
光看 obj 檔似乎有點抽象
| |
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 07:22 PM |
請問在 MASM 裡使用
XOR EAX,EAX 及MOV EAX,0
有什麼差別??
從結果來看,兩個結果相同
就可讀性來看,MOV EAX,0 比較直覺
可是經常看到別人使用 XOR EAX,EAX
是因為 XOR EAX,EAX 比較快還是 CODE SIZE 較小??
| |