Я использую 32-битную систему Linux, и я не могу понять, как добавить значение в память. Это пример:ASM x86 - Переместить значение в память
str: .asciz "AAA"
p: .long 0
.text
.globl main
main:
movl $str, p #Save the address of str into p (?)
Я знаю, что я могу сделать movl $str, %eax
, чтобы сохранить адрес ул внутри регистра EAX, но я не могу сделать то же самое с p
, потому что я получаю ошибку ошибки сегментации.
Я попытался также этой альтернативой, но результат всегда ошибка сегментации:
main:
call self
self:
pop %ebp
movl $str, (p-self) (%ebp)
Может кто-нибудь объяснить мне, как использовать mov
в правильном направлении? Я также хотел бы знать, возможно ли сохранить адрес str в p во время компиляции.