im Moment versuche ich, ein bisschen näher an Assembler-Programmierung zu bekommen und sah daher im Assembler-Code eines einfachen Welt Programm hallo:Was genau bedeutet <[email protected]>?
#include <stdio.h>
int main()
{
int i;
for(i=0; i<10; i++)
{
printf("Hello, world!\n");
}
return 0;
}
Jetzt versuche ich zu verstehen, wie ein fiew einfachen Assembler-Befehle arbeiten, während gehen Schritt für Schritt durch den Assembler-Code und zu analysieren, was genau passiert:
ist0x000000000040052d <+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
Das Problem, das ich wirklich diese Zeile nicht verstehen:
0x0000000000400543 <+22>: call 0x400410 <[email protected]>
ich an der Adresse 0x400410 auf verschiedene Weise versucht, Blick, aber ich habe nicht wirklich bekommen, was es wirklich tut:/Auch ich weiß nicht, was das genau bedeutet: <[email protected]>
groß wirklich sein würde, wenn jemand mir dies zu verstehen helfen könnte bestimmte Linie :) Grüße Sleepy
puts @ plt ist ein Funktionsaufruf. http://www.cplusplus.com/reference/cstdio/puts/ – IdeaHat
Siehe auch [Was bedeutet '@ plt' hier?] (https://stackoverflow.com/questions/5469274/what-does-plt-mean -here) – DCoder
Es ruft die Bibliotheksfunktion 'puts()' auf, um Ihren Text zu drucken (anstelle von 'printf()' - da Sie keine Parameter übergeben, ist es gleichbedeutend mit dem Aufruf des einfacheren/schnelleren 'puts() ') –