我正在尝试将NASM代码转换为GAS。我不能让lea指令工作。
这是我的原始代码,这完全有效:
section .bss
arr resb 10
section .text
global _start:
_start:
push arr
call getInput
...
getInput:
mov esi, 0
mov ebp, [esp+4]
loop:
...
mov eax, 3
mov ebx, 0
lea ecx, [ebp+esi]
mov edx, 2
int 80h
...
这是我想写的GAS对手:
.data
arr: .space 10
.text
.globl _start
_start:
push arr
call getInput
...
getInput:
movl $0, %esi
movl 4(%esp,1), %ebp
loop:
...
movl $3, %eax
movl $0, %ebx
leal (%ebp,%esi), %ecx
movl $2, %edx
int $0x80
我一直在寻找如何正确地做这件事的几个小时,但我找不到关于这个问题的教程。它在运行时会产生分段错误。请帮帮我。
P.S。我使用这些命令进行编译和链接(感谢此处回答我之前问题的人):
as --32 -o sample.o sample.s
ld -m elf_i386 -o sample sample.o