push %ebp
mov %esp,%ebp
sub $0x8,%esp
movl $0x64,0xfffffffc(%ebp)
.....
....
像BP入栈什么的我知道是用来保存SP栈顶指针,方便以后索引函数参数用的。
那么请问上面红色的代码行实现了一个什么功能?(0x64只是某个具体情况的反汇编结果,实际上可以使其他数字)
6 个解决方案
#1
给一局部变量赋值 100
#2
请问楼上,你说给一局部变量赋值100,那么0xfffffffc(%ebp)这个位置是在哪里?以bp寻址的话默认段是SS段,也就是堆栈段。那么[bp+0xfffffffc]岂不是太大了,堆栈不会溢出?
楼下的回答问题的盆友注意了,我不理解的是后面那半句0xfffffffc(%ebp)代表什么意思。
楼下的回答问题的盆友注意了,我不理解的是后面那半句0xfffffffc(%ebp)代表什么意思。
#3
0xfffffffc 作为偏址来说,是个符号数,即其为 -4,更直观的写法是 [ebp-4]
#4
也就是说,我知道是给某个局部变量赋值100,这个局部变量是在堆栈中没错,但是它在堆栈中的位置为什么是0xfffffffc(%ebp) ? 这个位置离栈顶指针是不是太远了? 正面回答给全分:)
#5
也就是说,我知道是给某个局部变量赋值100,这个局部变量是在堆栈中没错,但是它在堆栈中的位置为什么是0xfffffffc(%ebp) ? 这个位置离栈顶指针是不是太远了? 正面回答给全分:)
#6
谢谢zara
没想到是带符号数。。我说怎么这么大。结贴。
没想到是带符号数。。我说怎么这么大。结贴。
#1
给一局部变量赋值 100
#2
请问楼上,你说给一局部变量赋值100,那么0xfffffffc(%ebp)这个位置是在哪里?以bp寻址的话默认段是SS段,也就是堆栈段。那么[bp+0xfffffffc]岂不是太大了,堆栈不会溢出?
楼下的回答问题的盆友注意了,我不理解的是后面那半句0xfffffffc(%ebp)代表什么意思。
楼下的回答问题的盆友注意了,我不理解的是后面那半句0xfffffffc(%ebp)代表什么意思。
#3
0xfffffffc 作为偏址来说,是个符号数,即其为 -4,更直观的写法是 [ebp-4]
#4
也就是说,我知道是给某个局部变量赋值100,这个局部变量是在堆栈中没错,但是它在堆栈中的位置为什么是0xfffffffc(%ebp) ? 这个位置离栈顶指针是不是太远了? 正面回答给全分:)
#5
也就是说,我知道是给某个局部变量赋值100,这个局部变量是在堆栈中没错,但是它在堆栈中的位置为什么是0xfffffffc(%ebp) ? 这个位置离栈顶指针是不是太远了? 正面回答给全分:)
#6
谢谢zara
没想到是带符号数。。我说怎么这么大。结贴。
没想到是带符号数。。我说怎么这么大。结贴。