读书人

解释看不懂

发布时间: 2012-03-09 21:42:53 作者: rapoo

求助解释,看不懂

谁能帮我详细解释下下面这段汇编是什么意思

Assembly code
004013EE    push   %ebp004013EF    mov    %esp,%ebp004013F1    sub    $0x18,%esp004013F4    and    $0xfffffff0,%esp004013F7    mov    $0x0,%eax004013FC    add    $0xf,%eax004013FF    add    $0xf,%eax00401402    shr    $0x4,%eax00401405    shl    $0x4,%eax00401408    mov    %eax,-0x14(%ebp)0040140B    mov    -0x14(%ebp),%eax0040140E    call   0x40d104 <_alloca>00401413    call   0x40cc84 <__main>00401418    movl   $0xa,-0x4(%ebp)0040141F    fildl  -0x4(%ebp)00401422    fstpl  -0x10(%ebp)00401425    mov    $0x0,%eax0040142A    leave0040142B    ret


[解决办法]
探讨
Assembly code
0040141F fildl -0x4(%ebp)
00401422 fstpl -0x10(%ebp)


特别是这两句,看不懂

[解决办法]
fildl -0x4(%ebp)
fstpl -0x10(%ebp)

fildl和fstpl应该是80387以后的指令(80387汇编指令未发现),fildl是向st(即浮点数操作堆栈,深度一般为8)栈顶放置一个长(最后一个l)整数(标志i),其值是[ebp-4]单元,若是fld则是装入一个浮点数。
同理,fstpl就是从栈顶弹出一个长整型数,放置在[ebp-10h]这个地方。

读书人网 >汇编语言

热点推荐