解引用寄存器地址上的汇编程序分段错误

时间:2012-04-13 08:13:32

标签: assembly segmentation-fault dereference

我遇到x86程序集问题(AT& T)。

因为我需要在汇编程序中实现数组查找,所以我在寄存器%ebx中有数组的第一项(比如arr [0]),并且为了指向arr [1],例如我写道:

mov -4(%ebx), %eax

问题是,当我尝试获取ebx的地址时,我有一个分段错误,这很奇怪,因为我可以毫无问题地获得ebx的值(arr [0]的值)。 一些建议?

编辑: 好的,我想我理解错误。 当我声明数组时,我必须在变量arr上放置第一个元素的地址:

mov -4(%ecx), %eax

但是用这条指令我把值放在地址上。 那我怎么能把地址?

1 个答案:

答案 0 :(得分:0)

arr[1]实际上不太可能位于-4[%ebx],更有可能位于+4

但根据你的问题,我不确定你是否理解。只有当%ebx是数组中第一个元素的地址时,这才有效。您的文字似乎表明您已将arr[0]加载到ebx中,在这种情况下,无法从那里获取其他元素。

您可能需要发布更多代码,以便我们可以看到您实际上要做的事情。代码通常胜过编程问题的描述性文本: - )

相关问题