AT T彙編心得之間接定址和LEA指令

2021-05-28 13:53:59 字數 602 閱讀 9475

定址方式:

0x4(%esp)的操作是把暫存器esp中的值取出,然後加上4,得到的值作為位址,間接定址得到需要的資料

例如:pushl -0x4(%ecx)

該指令的含義是取出暫存器ecx的值,減去4,將得到的值作為位址,在記憶體找到該位址對應的值,將其壓入棧中。

這是執行後的結果:

ecx            0xbff01450

esp 0xbff0143c 0xbff0143c

ebp 0xbff01498 0xbff01498

(gdb) x/x $esp

0xbff0143c: 0x0804840a

(gdb) x/x 0xbff0144c

0xbff0144c: 0x0804840a

其中,記憶體0xbff0144c即為%ecx-4後得到的值

lea 0x4(%esp), %ecx
該指令的作用是,取出esp暫存器裡的值,加上4,不再繼續定址,而是將得到值直接傳遞給ecx;如果是其他指令,則還需進行間接定址,再傳值。

AT T彙編心得之間接定址和LEA指令

t t彙編心得 1 定址方式 0x4 esp 的操作是把暫存器esp中的值取出,然後加上4,得到的值作為位址,間接定址得到需要的資料 例如 pushl 0x4 ecx 該指令的含義是取出暫存器ecx的值,減去4,將得到的值作為位址,在記憶體找到該位址對應的值,將其壓入棧中。這是執行後的結果 ecx ...

經典資料結構之間接定址

線性表主要有兩中表現方式,一種是連續儲存式,例如陣列,另一種是非連續儲存式,例如鍊錶。相比於鍊錶,陣列最大的好處就在於可以隨機訪問,鍊錶的最大優勢是,能夠有效利用儲存空間,合理的新增,刪除操作只需要o 1 於是誕生了間接定址,即是把陣列與鍊錶的優點結合起來。如下 ifndef indirectlis...

線性表綜合實驗之間接定址

includeusing namespace std const int max 100 templatestruct node templateclass indirectadd t number get int i int location get t x void insert int i,t...