1
好吧,這可能是一個愚蠢的問題,但我想我和其他人可能在學習的過程:從非x4地址訪問堆棧 - 有可能嗎?
我與32位彙編工作,並在& T語法。
假設我想dinamically生成一個字符串,保存它的內容到堆棧:
.data
str: .long 0
string: .string "value is %s.\n"
.globl main
movb $0,str+3 #terminate the string
movb $67,str+2
movb $67,str+1
pushl $str
movl %esp,%eax
incl %eax
push (%eax)
push $string
call printf
addl $12,%esp
ret
一點也沒有「T工作,我得到一個分段錯誤。但是,如果我評論的線
# incl %eax
,並在海峽開始添加另一個字節:
movb $67,str
然後它完美的作品,並顯示CCC。
看來,我不能引用從不是4的倍數的地址開始的字符串。或者我錯了嗎?我知道我可以從任何地址引用變量,但有沒有辦法在堆棧中這樣做?
再次感謝@Jester!它非常完美! :d – francisaugusto