- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
回顾:冯.诺依曼结构模型机控制器CPUPC输入设备输出设备MARMDRALU标志寄存器IR地址数据控制GPRs0123存储器01234567你妈会做的菜和厨师会做的菜不一样,同一个菜谱的做法也可能不同如同不同架构支持的指令集不同,同一种指令的实现方式和功能也可能不同控制器ALU标志寄存器地址数据控制GPRs017ffffffff80483d680483d580483d405589e5EIPbfff0000MDRIRMARbeeefffc回顾:IA-32的体系结构是怎样的呢?8个GPR(0~7),一个EFLAGs,PC为EIP可寻址空间4GB(编号为0~0xFFFFFFFF)指令格式变长,操作码变长由若干字段(OP、Mod、SIB等)组成程序由指令序列组成080483d4add:80483d4: 55 push%ebp80483d5: 89e5 mov%esp,%ebp80483d7: 83ec10sub$0x10,%esp80483da: 8b450cmov0xc(%ebp),%eax80483dd: 8b5508mov0x8(%ebp),%edx80483e0: 8d0402lea(%edx,%eax,1),%eax80483e3: 8945fcmov%eax,-0x4(%ebp)80483e6: 8b45fcmov-0x4(%ebp),%eax80483e9: c9leave80483ea: c3ret代码执行从80483d4开始!“objdump-dtest”显示的add函数结果起始EIP=?EIP←0x80483d4若i=2147483647,j=2,则程序执行结果是什么?每一步如何执行?想想妈妈怎么做菜的?根据EIP取指令指令译码取操作数指令执行回写结果修改EIP的值取并执行指令OP假定0x80484d4等是内存地址,实际上它们是虚存地址,需要虚-实地址转换指令执行过程控制器ALU标志寄存器地址数据控制GPRs017bfff002080483d680483d580483d40080483d4add:80483d4:55 push%ebp80483d5:89e5 mov%esp,%ebp5589e5EBPESPEIPbfff0020bfff0000bfff000080483d480483d45589e583Rd5589e58355MDR5589e58380483d4S1:取指令IR5589e583RdS2:指令译码S3:指令执行MARbffefffc55功能:R[esp]←R[esp]-4,M[R[esp]]←R[ebp]45指令执行过程控制器ALU标志寄存器地址数据控制GPRs017bfff002080483d680483d580483d40080483d4add:80483d4:55 push%ebp80483d5:89e5 mov%esp,%ebp5589e5EBPESPEIPbfff0020bfff000080483d455MDR80483d4S1:取指令IRS2:指令译码S3:指令执行bffefffcMARbffefffc功能:R[esp]←R[esp]-4,M[R[esp]]←R[ebp]45指令执行过程控制器ALU标志寄存器地址数据控制GPRs017bfff002080483d680483d580483d40080483d4add:80483d4:5
文档评论(0)