求助一个汇编语句

时间:2021-10-16 21:54:14
我在函数调用的反汇编代码中,经常看到如下汇编代码: 

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)代表什么意思。

#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)代表什么意思。

#3


0xfffffffc 作为偏址来说,是个符号数,即其为 -4,更直观的写法是 [ebp-4]

#4


也就是说,我知道是给某个局部变量赋值100,这个局部变量是在堆栈中没错,但是它在堆栈中的位置为什么是0xfffffffc(%ebp) ? 这个位置离栈顶指针是不是太远了?  正面回答给全分:)

#5


也就是说,我知道是给某个局部变量赋值100,这个局部变量是在堆栈中没错,但是它在堆栈中的位置为什么是0xfffffffc(%ebp) ? 这个位置离栈顶指针是不是太远了?  正面回答给全分:)

#6


谢谢zara

没想到是带符号数。。我说怎么这么大。结贴。