我对x86汇编(AT&T)有问题。
因为我需要在汇编器中实现数组查找,所以我在寄存器 %ebx 中有数组的第一项(比如 arr[0]),为了指向 arr[1],例如我写道:
mov -4(%ebx), %eax
问题是,当我尝试获取 ebx 的地址时,我遇到了分割错误,这很奇怪,因为我可以毫无问题地获取 ebx 的值(arr[0] 的值)。一些建议?
编辑:好的,我想我理解了错误。当我声明数组时,我必须在变量 arr 上放置第一个元素的地址:
mov -4(%ecx), %eax
但是有了这个指令,我把值而不是地址放在一起。那么我该如何输入地址呢?
arr[1]
实际上不太可能在-4[%ebx]
,它更有可能在+4
。
但根据你的问题,我不确定你是否理解。仅当%ebx
是数组中第一个元素的地址时,这才有效。您的文本似乎表明您已将arr[0]
的值加载到ebx
在这种情况下,无法从那里获取其他元素。
您可能需要发布更多代码,以便我们可以看到您实际尝试执行的操作。 对于编程问题,代码通常胜过描述性文本:-)