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