2012-04-13 44 views
0

x86組件出現問題(AT & T)。解除引用寄存器地址上的彙編程序段分段錯誤

因爲我需要在彙編程序中實現數組查找,我在寄存器%ebx中有數組的第一項(比如arr [0]),並且爲了指向arr [1],例如我寫了:

mov -4(%ebx), %eax 

的問題是,我有一個分段錯誤,當我試圖讓EBX的地址,這是很奇怪的,因爲我可以得到EBX的值沒有問題(改編的[0]值).. 一些建議?編號: 好吧,我想我明白了錯誤。 當我聲明數組我不得不穿上可變ARR的第一個元素的地址:

mov -4(%ecx), %eax 

但是與此指令i把值不是地址。 那麼我怎麼能把地址?

+0

你能顯示周圍的代碼嗎?我認爲你誤解了寄存器工作方式。 – DCoder 2012-04-13 08:20:37

回答

0

arr[1]實際上是相當不可能是在-4[%ebx],它更可能是在+4

但基於你的問題,我不確定你是否理解。只有在%ebx是數組中第一個元素的地址時纔會起作用。您的文字似乎表明您已將的值arr[0]加載到ebx中,在這種情況下,無法從其中獲取其他元素。

您可能需要發佈一些更多的代碼,以便我們可以看到您實際嘗試執行的操作。代碼通常勝過編程問題的描述性文本:-)