機器彙編和反彙編 指標 結構的尺寸(對齊)

2021-10-03 11:32:55 字數 1484 閱讀 3443

呼叫編譯器產生組合語言mstore.s:

gcc -og -s mstore.c

呼叫彙編器產生二進位制檔案mstore.o:

gcc -og -c mstore.c

反彙編:

objdump -d mstore.o

編譯生成二進位制可執行檔案prog:

gcc -og -o prog main.c mstore.c

反彙編:

objdump -d prog

long mult2(long,long);

void multstore(long x,long y,long *dest)

.file	"mstore.c"

.text

.globl multstore

.type multstore, @function

multstore:

.lfb0:

.cfi_startproc

pushq %rbx

.cfi_def_cfa_offset 16

.cfi_offset 3, -16

movq %rdx, %rbx

call mult2@plt

movq %rax, (%rbx)

popq %rbx

.cfi_def_cfa_offset 8

ret.cfi_endproc

.lfe0:

.size multstore, .-multstore

.ident "gcc: (ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0"

.section .note.gnu-stack,"",@progbits

二進位制檔案mstore.o不可檢視

0000000000000000 :

0: 53 push %rbx

1: 48 89 d3 mov %rdx,%rbx

4: e8 00 00 00 00 callq 9 9: 48 89 03 mov %rax,(%rbx)

c: 5b pop %rbx

d: c3 retq

要生成可執行**需要一組目標**檔案.o執行鏈結器,而這組目標**檔案中必須包含乙個main函式

#includevoid multstore(long x,long y,long *dest);

int main()

long mult2(long a,long b)

#includestruct a; 

struct b;

struct c;

int main()

反彙編 函式指標

函式指標的定義 返回型別 呼叫約定 變數名 引數列表 例如 int cdecl myfun int,int 一般都用來呼叫非本身程式提供的函式來進行使用 如下 includeint main 反彙編如下 5 int cdecl myfun int,int 6 7 int i 10 00401028 ...

c 反彙編 迴圈結構

debug 23 int nsum 0 00a572ae c7 45 f8 00 0000 00mov dword ptr nsum 0 24 int nindex 0 00a572b5 c7 45 ec 00 0000 00mov dword ptr nindex 0 25 do 26 while...

反彙編的call和retn

call指令 call指令可不是如喚指令,而是子程式呼叫指令。那麼組合語言中的子程式是什麼呢?子程式能被其它程式呼叫,在實現某種功能後能自動返回到呼叫程式去的程式。其最後一條指令一定是返回指令,故能保證得新返回到呼叫它的程式中去。也可呼叫其它子程式,甚至可自身呼叫。我們可以暫時把子程式理解為乙個 段...