目前,我試圖讓一位接近彙編編程,因此看一個簡單的Hello World程序的彙編代碼:<[email protected]>是什麼意思?
#include <stdio.h>
int main()
{
int i;
for(i=0; i<10; i++)
{
printf("Hello, world!\n");
}
return 0;
}
現在我試着去理解一個fiew簡單的彙編指令是如何工作的,當去一步步通過彙編代碼一步,分析到底發生了什麼:
0x000000000040052d <+0>: push rbp
0x000000000040052e <+1>: mov rbp,rsp
0x0000000000400531 <+4>: sub rsp,0x10
0x0000000000400535 <+8>: mov DWORD PTR [rbp-0x4],0x0
0x000000000040053c <+15>: jmp 0x40054c <main+31>
0x000000000040053e <+17>: mov edi,0x4005e4
0x0000000000400543 <+22>: call 0x400410 <[email protected]>
0x0000000000400548 <+27>: add DWORD PTR [rbp-0x4],0x1
0x000000000040054c <+31>: cmp DWORD PTR [rbp-0x4],0x9
0x0000000000400550 <+35>: jle 0x40053e <main+17>
0x0000000000400552 <+37>: mov eax,0x0
0x0000000000400557 <+42>: leave
0x0000000000400558 <+43>: ret
的問題是,我不真正瞭解這一行:
0x0000000000400543 <+22>: call 0x400410 <[email protected]>
我試圖尋找各種方式ADRESS 0x400410,但我真的不明白它確實:/還有我不知道這是什麼確切指的是:<[email protected]>
將是非常巨大的,如果有人可以幫助我理解這具體行:) 問候困
puts @ plt是一個函數調用。 http://www.cplusplus.com/reference/cstdio/puts/ – IdeaHat 2014-09-04 13:51:06
另請參見[@ plt是什麼意思?](https://stackoverflow.com/questions/5469274/what-does-plt-mean -here) – DCoder 2014-09-04 13:51:45
它調用'puts()'庫函數來打印文本(代替'printf()' - 因爲你沒有傳入任何參數,這相當於調用更簡單/更快的'puts() ') – 2014-09-04 13:51:51