我是一名学生,对装配编程完全陌生,特别是对GAS而言。我有一个.asm程序,它使用选择排序(显然)排序10个整数的数组,我们的任务是将代码转换为GAS。我坚持要获得阵列的输入。这是我所做的一小部分:
section .bss
arr resb 10
section .text
global _start:
_start:
push arr
call getInput
...
getInput:
mov esi, 0
mov ebp, [esp+4] ; line number 59
...
问题是,我无法找到如何转换第59行中的代码。这就是我所做的(基于我发现的教程):
.data
arr: .space 10
.text
.globl _start
_start:
push arr
call getInput
...
getInput:
movl $0, %esi
movl 4(%esp,1), %ebp
我尝试运行它并产生了分段错误。我究竟做错了什么?我是否正确地推动了arr的地址? 4(%esp,1)是否等于[esp + 4]?提前谢谢!