linux 彙編學習

2021-07-09 06:33:51 字數 536 閱讀 2847

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...