首页
论坛
课程
招聘
[求助]版主进来帮助一下,看书后的疑问。
2012-2-17 11:58 3278

[求助]版主进来帮助一下,看书后的疑问。

2012-2-17 11:58
3278
从当当买了书,51.8免邮费,情人节哪天收到的。本人刚学习反汇编。以前就是在C/C++下开发。。。
昨天晚上看了函数调用和各种表达式求值的过程。
有几个问题能指导一下吗?
第一个就是那个call指令。
call指令在进入被call的{}代码之前。要做几件事情。逻辑顺序是这样的吗?
第一个是当前ESP的值进栈,然后ESP-4.
第二,esp的内容为call指令的下一个地址。
第三,传递参数,导致ESP又被修改。
第四,保存当前EAX,EDX,等寄存器的值。
第五,执行被调用函数{开始的第一个语句。

总感觉逻辑上应该是,首先保存当前的寄存器状态。等函数ret后,恢复到当前状态,继续执行。然后堆栈操作。现在应该是修改esp的内容,使其指向call后的指令地址。然后开始参数操作,操作堆栈。这个时候才开始执行{后的第一条指令了吧。

ret正好是call调用相反的逻辑。当然有一些例外,如EAX作为返回值。

这个和C++的构造函数和析构函数逻辑上是一样的吧。。。。

//---------------------------------------------------------------------------------------------
在一个问题就是表达式求值的问题。
8 % (-3) = ?
根据 a = b*q + r
q = ( a - r ) / b   ----------->  A
r = a - b * q      ------------> B
把 8和-3 带入 A.
q = ( 8 - r ) / -3  --------- 里边的r,未知,按结果看,就是0了。这个能说的细点吗?谢谢。(难道是因为r的区间是( 0..abs( q ) ) )。就是说r在该区间任意取一个值,不影响q的结果。因为。|r|<|b|。

钱老师是不是看过了the art of programing.那本巨著了.............

越学习,越感觉数学的重要了。钱老师的兴趣和爱好中。对P59页的数学推理,是建立在能够推理上吗。还是熟悉,看了钱老师的书,突然意识到,计算机就是算数啊。尤其对除法的解释。说实话,只能慢慢的体会和学习了。。。。。。。

【公告】【iPhone 13、ipad、iWatch】11月15日中午12:00,看雪·众安 2021 KCTF秋季赛 正式开赛【攻击篇】!!!文末有惊喜~

收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 12
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Navyseal 活跃值 2012-2-17 13:34
2
0
钱老师,那个q = ( a - r ) / b   ----------->  A
是不是等同于 q =  a / b - r / b, 由题设知道 r / b < 1, 则 q = ( a - r ) / b 等同于对( a - r ) / b 向下取整。
游客
登录 | 注册 方可回帖
返回