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

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

Post by Anonymous »

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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post