当前位置: 代码迷 >> 汇编语言 >> 解释,看不懂
  详细解决方案

解释,看不懂

热度:3534   发布时间:2013-02-26 00:00:00.0
求助解释,看不懂

谁能帮我详细解释下下面这段汇编是什么意思
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]这个地方。
  相关解决方案