zeigt habe ich ein einfaches kleines Programm in nasm (linux):objdump lange Adressen nach der Verknüpfung
den Befehl nasm -f elf32 -o file.o file.asm
mit der Objektdatei zu erzeugen.
Wenn objdump -M intel -d file.o
mit erhalte ich dieses Ergebnis:
Ich sehe, dass die von objdump
gezeigten Adressen sind vernünftig, aber wenn ich tun, um die Kompilierung mit dem Befehl den ausführbaren Code zu erzeugen ld -m elf_i386 -o executable file.o
; Ich erhalte die followwing Ergebnis, indem Sie auf die ausführbare Datei mit objdump:
Fragen:
- Warum haben die Adressen so lange geworden ist, obwohl sich die ausführbare Datei ist sehr klein (500 Bytes an die meisten).
- Auf was Adressen zeigen, bin ich sicher, dass es nicht in den Speicher zeigt, weil das Programm noch nicht geladen ist.
- Sind sie relativ oder absolut Adressen ?? Wenn relativ, dann relativ zu was ?? und wenn absolut, wie können sie absolut sein und das Programm ist noch nicht im Speicher geladen.
Es tut mir wirklich leid, wenn diese Frage für einige von Ihnen dumm scheint, aber ich muss das wirklich verstehen, es wird mir sehr in meinem Projekt helfen.
Ich dachte, dass Linux relative Adressen verwendet !! Was ist, wenn ich beide Programme mit diesen Adressen belaste, wo wären sie? – Sidahmed