Как инициализировать указатель стека в ассемблере x86 на Linux [Duplicate]Linux

Anonymous
Как инициализировать указатель стека в ассемблере x86 на Linux [Duplicate]

Сообщение Anonymous »

Приведен пример простой программы для Assembler GNU на архитектуре i386 в 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>
и скомпилировать это так: < /p>
as --32 -o test test.s
ld -m elf_i386 a.out
< /code>
Интересно, следует ли инициализировать указатель стека вручную в начале, или он каким -то образом устанавливается линкером (или ОС, при загрузке эльфа)?regs: ECS, EDS, ESS:
0023 002B 002B
data segment: $msg ... esp:
080491BB FFF4D5E0
< /code>
i.e. Это похоже на точку DS и SS в том же сегменте, но если эти адреса непрерывны, этот сегмент должен быть очень большим. Извините за наивный вопрос.

Подробнее здесь: https://stackoverflow.com/questions/797 ... r-on-linux

Вернуться в «Linux»