1 計算機進行xor的速度要大於載入資料的速度,因此在設定暫存器的值為0時,通常用
xorl %eax,%eax
代替movl $0,%eax
2 intel暫存器作用
x86-64位有16個通用暫存器
esp/rsp: 儲存了當前堆疊棧頂指標的暫存器。
ebp/rbp: 儲存了當前堆疊基位址指標的暫存器。
通常在方法呼叫前會儲存堆疊基位址
3 通常採用%eax暫存器作為返回值
4 c 語言指標取值操作 對應彙編的
把指標對應的值存放到暫存器中,把暫存器中的值作為記憶體位址,從記憶體位址獲取值
c語言的指標變數就是作為位址看待,通常變數作為值看待。
5 test指令
test指令後面的連個運算元相與,不儲存運算結果,只影響標誌位。
如test %rbp,%rbp 使用者判斷%rbp暫存器的值是否為0
6 x86-64採用暫存器傳遞指標和整數引數。而i386採用堆疊傳遞所有的方法引數。
此操作方式x86-64快於i386。
Linux 下彙編學習
linux下彙編學習 在ubuntu下用學習組合語言程式設計,在使用ld鏈結時有碰到ld i386 architecture of input file eatsyscall.o is incompatible with i386 x86 64 output的問題。很明顯,root cause 是我...
Linux下彙編學習 1
教材 programming from the ground up.pdf 直接看 purpose program that exits and returns a status code back to the linux kernel input none output returns a st...
Linux下彙編學習 4
purpose this program will compute the value of 2 3 5 2 section data section text globl start start pushl 3 pushl 2 call power addl 8,esp pushl eax pus...