C++程序汇编代码输出请教

LZQGdut 2011-02-23 10:14:08
请教各位一个简单的程序:
void main()
{
004113C0 push ebp
004113C1 mov ebp,esp
004113C3 sub esp,0FCh
004113C9 push ebx
004113CA push esi
004113CB push edi
004113CC lea edi,[ebp-0FCh]
004113D2 mov ecx,3Fh
004113D7 mov eax,0CCCCCCCCh
004113DC rep stos dword ptr es:[edi]
int a,b;
a=5,
b=20;
004113DE mov dword ptr [a],5
004113E5 mov dword ptr [b],14h

int *p1=&a;
004113EC lea eax,[a]
004113EF mov dword ptr [p1],eax

int *p2=&b;
004113F2 lea eax,[b]
004113F5 mov dword ptr [p2],eax

char* p3="hello";
004113F8 mov dword ptr [p3],offset string "hello" (415860h)

……(其它汇编代码输出)
}
以上是C++源程序及相应的汇编代码输出。哪位能否帮忙说明下,代码段和堆栈段是怎么分配这些常量和变量的?先谢谢了!
...全文
118 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pstrunner 2011-02-24
  • 打赏
  • 举报
回复
书本基本都忘光啦,呵呵。
shaotine_wu 2011-02-24
  • 打赏
  • 举报
回复
这个很难简短的说清楚。等待高手解答
wshcdr 2011-02-24
  • 打赏
  • 举报
回复
变量a和b是分配在 .data段上的
gumengshiep 2011-02-23
  • 打赏
  • 举报
回复
楼主学习一下编译原理吧,不是三言两语能说清楚的
赵4老师 2011-02-23
  • 打赏
  • 举报
回复
学点汇编语言吧
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
chzhn 2011-02-23
  • 打赏
  • 举报
回复
004113C3 sub esp,0FCh 这一句分配局部变量,
字符串常量存放在rdata段,使用的时候直接在汇编语言里面写进去字符串常量的地址,而数值型常量直接写在代码里面,比如004113E5 mov dword ptr [b],14h

64,635

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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