求达人解释这段汇编

allan1109 2012-02-16 07:09:16
小弟刚学汇编。只能看懂一些基本的操作。下面这段里面涉及好多没见过的操作符,望达人指教 给我解释下整个的意思。因为转成c其实是一段很简单的代码。
Dump of assembler code for function main:
0x0804843b <+0>: push %ebp
0x0804843c <+1>: mov %esp,%ebp
0x0804843e <+3>: and $0xfffffff0,%esp
0x08048441 <+6>: sub $0x30,%esp
0x08048444 <+9>: movl $0x3,0x2c(%esp)
0x0804844c <+17>: movl $0x6,0x28(%esp)
0x08048454 <+25>: mov $0x3f99999a,%eax
0x08048459 <+30>: mov %eax,0x20(%esp)
0x0804845d <+34>: fildl 0x2c(%esp)
0x08048461 <+38>: flds 0x804a014
0x08048467 <+44>: fmulp %st,%st(1)
0x08048469 <+46>: fnstcw 0x1e(%esp)
0x0804846d <+50>: movzwl 0x1e(%esp),%eax
0x08048472 <+55>: mov $0xc,%ah
0x08048474 <+57>: mov %ax,0x1c(%esp)
0x08048479 <+62>: fldcw 0x1c(%esp)
0x0804847d <+66>: fistpl 0x18(%esp)
0x08048481 <+70>: fldcw 0x1e(%esp)
0x08048485 <+74>: mov 0x18(%esp),%eax
0x08048489 <+78>: mov 0x28(%esp),%edx
0x0804848d <+82>: mov %edx,0x4(%esp)
0x08048491 <+86>: mov %eax,(%esp)
0x08048494 <+89>: call 0x804841b <bar>
0x08048499 <+94>: mov %eax,0x24(%esp)
0x0804849d <+98>: mov $0x8048580,%eax
0x080484a2 <+103>: mov 0x24(%esp),%edx
0x080484a6 <+107>: mov %edx,0x4(%esp)
0x080484aa <+111>: mov %eax,(%esp)
0x080484ad <+114>: call 0x804831c <printf@plt>
0x080484b2 <+119>: mov $0x0,%eax
0x080484b7 <+124>: leave
0x080484b8 <+125>: ret
End of assembler dump.

Dump of assembler code for function foo:
0x080483e4 <+0>: push %ebp
0x080483e5 <+1>: mov %esp,%ebp
0x080483e7 <+3>: sub $0x18,%esp
0x080483ea <+6>: mov 0x8(%ebp),%edx
0x080483ed <+9>: mov %edx,%eax
0x080483ef <+11>: shl $0x2,%eax
0x080483f2 <+14>: add %edx,%eax
0x080483f4 <+16>: mov %eax,-0x14(%ebp)
0x080483f7 <+19>: fildl -0x14(%ebp)
0x080483fa <+22>: fstpl -0x8(%ebp)
0x080483fd <+25>: fldl -0x8(%ebp)
0x08048400 <+28>: fnstcw -0x16(%ebp)
0x08048403 <+31>: movzwl -0x16(%ebp),%eax
0x08048407 <+35>: mov $0xc,%ah
0x08048409 <+37>: mov %ax,-0x18(%ebp)
0x0804840d <+41>: fldcw -0x18(%ebp)
0x08048410 <+44>: fistpl -0x14(%ebp)
0x08048413 <+47>: fldcw -0x16(%ebp)
0x08048416 <+50>: mov -0x14(%ebp),%eax
0x08048419 <+53>: leave
0x0804841a <+54>: ret
End of assembler dump.

Dump of assembler code for function bar:
0x0804841b <+0>: push %ebp
0x0804841c <+1>: mov %esp,%ebp
0x0804841e <+3>: sub $0x18,%esp
0x08048421 <+6>: mov 0xc(%ebp),%eax
0x08048424 <+9>: add $0x5,%eax
0x08048427 <+12>: imul 0x8(%ebp),%eax
0x0804842b <+16>: mov %eax,-0x4(%ebp)
0x0804842e <+19>: mov -0x4(%ebp),%eax
0x08048431 <+22>: mov %eax,(%esp)
0x08048434 <+25>: call 0x80483e4 <foo>
0x08048439 <+30>: leave
0x0804843a <+31>: ret
End of assembler dump.

谢谢了
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
allan1109 2012-02-19
  • 打赏
  • 举报
回复
dingyixia ..........qiu gaoshou ...
allan1109 2012-02-17
  • 打赏
  • 举报
回复
恩对的 是通过gdb反汇编得到的 想知道对应的c代码
再顶一下希望高手出现
装逼之王 2012-02-17
  • 打赏
  • 举报
回复
我也是菜鸟


上面的是你反汇编出来的吗?
allan1109 2012-02-16
  • 打赏
  • 举报
回复
同意楼上啊,所以求高手帮助啊
ssd189 2012-02-16
  • 打赏
  • 举报
回复
汇编难学啊.

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧