So initialisieren Sie den Stapelzeiger in X86 Assembler unter Linux [Duplikat]

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: So initialisieren Sie den Stapelzeiger in X86 Assembler unter Linux [Duplikat]

by Anonymous » 19 Aug 2025, 10:10

Angesichts des Beispiels eines einfachen Programms für GNU Assembler auf i386 Architektur unter Linux: < /p>
.section .data
msg: .ascii "Hi, People!\n"
len = . - msg

.section .text
.global _start

_start:
# print message
movl $4, %eax ; movl $1, %ebx ; movl $msg, %ecx ; movl $len, %edx
int $0x80
# exit to system
movl $1, %eax ; movl $0, %ebx
int $0x80
< /code>
und kompilieren Sie es so: < /p>
as --32 -o test test.s
ld -m elf_i386 a.out
< /code>
Ich frage mich: Sollte der Stapelzeiger zu Beginn manuell initialisiert werden, oder wird er irgendwie von Linker eingestellt (oder Betriebssystem beim Laden von Elfen)?regs: ECS, EDS, ESS:
0023 002B 002B
data segment: $msg ... esp:
080491BB FFF4D5E0
< /code>
i.e. Es sieht so aus, als ob DS- und SS -Punkt im selben Segment punkten, aber wenn diese Adressen kontinuierlich sind, sollte dieses Segment sehr groß sein. Entschuldigung für naive Frage.

Top