




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1. 提交三个程序的mips汇编代码文件以及x86汇编代码文件;MIPS1. test.c:.frame $sp,16,$31.set noreorder.cpload $25.set reorderaddu $sp,$sp,-16.mask 0x40c00000,-8sw $22,0($sp)sw $23,4($sp)sw $30,8($sp)la $30,3la $23,2addu $22,$30,$23subu $22,$30,$23mul $22,$30,$23div $22,$30,$23rem $22,$30,$23move $2,$0L.1:lw $22,0($sp)lw $23,4($sp)lw $30,8($sp)addu $sp,$sp,16j $312. sum.c.frame $sp,16,$31.set noreorder.cpload $25.set reorderaddu $sp,$sp,-16.mask 0x40800000,-12sw $23,0($sp)sw $30,4($sp)move $30,$0move $23,$0move $30,$0L.2:addu $23,$23,$30L.3:la $30,1($30)la $24,100ble $30,$24,L.2move $2,$0L.1:lw $23,0($sp)lw $30,4($sp)addu $sp,$sp,16j $313. func.c.frame $sp,0,$31.set noreorder.cpload $25.set reorderaddu $2,$4,$5L.1:j $31.end add.globl main.text.align 2.ent mainmain:.frame $sp,48,$31.set noreorder.cpload $25.set reorderaddu $sp,$sp,-48.mask 0x82000000,-28.cprestore 16sw $31,20($sp)la $24,1sw $24,-4+48($sp)la $24,2sw $24,-8+48($sp)lw $4,-4+48($sp)lw $5,-8+48($sp)jal addsw $2,-12+48($sp)move $2,$0L.2:lw $25,16($sp)lw $31,20($sp)addu $sp,$sp,48j $31X86汇编Sum.c#includeusing namespace std;int main()012D1370 push ebp 012D1371 mov ebp,esp 012D1373 sub esp,0D8h 012D1379 push ebx 012D137A push esi 012D137B push edi 012D137C lea edi,ebp-0D8h 012D1382 mov ecx,36h 012D1387 mov eax,0CCCCCCCCh 012D138C rep stos dword ptr es:edi int i,sum;i=0;012D138E mov dword ptr i,0 sum=0;012D1395 mov dword ptr sum,0 for(i=0;i=100;i+)012D139C mov dword ptr i,0 012D13A3 jmp main+3Eh (12D13AEh) 012D13A5 mov eax,dword ptr i 012D13A8 add eax,1 012D13AB mov dword ptr i,eax 012D13AE cmp dword ptr i,64h 012D13B2 jg main+4Fh (12D13BFh) sum+=i;012D13B4 mov eax,dword ptr sum 012D13B7 add eax,dword ptr i 012D13BA mov dword ptr sum,eax 012D13BD jmp main+35h (12D13A5h) return 0;012D13BF xor eax,eax 012D13C1 pop edi 012D13C2 pop esi 012D13C3 pop ebx 012D13C4 mov esp,ebp 012D13C6 pop ebp 012D13C7 ret Fun.cint main()009D13E0 push ebp 009D13E1 mov ebp,esp 009D13E3 sub esp,0E4h 009D13E9 push ebx 009D13EA push esi 009D13EB push edi 009D13EC lea edi,ebp-0E4h 009D13F2 mov ecx,39h 009D13F7 mov eax,0CCCCCCCCh 009D13FC rep stos dword ptr es:edi int a=1;009D13FE mov dword ptr a,1 int b=2;009D1405 mov dword ptr b,2 int c;c=add(a,b);009D140C mov eax,dword ptr b 009D140F push eax 009D1410 mov ecx,dword ptr a 009D1413 push ecx 009D1414 call add (9D1096h) 009D1419 add esp,8 009D141C mov dword ptr c,eax return 0;009D141F xor eax,eax 009D1421 pop edi 009D1422 pop esi 009D1423 pop ebx 009D1424 add esp,0E4h 009D142A cmp ebp,esp 009D142C call ILT+315(_RTC_CheckEsp) (9D1140h) 009D1431 mov esp,ebp 009D1433 pop ebp 009D1434 ret Test.c#includeusing namespace std;int main()003B1370 push ebp 003B1371 mov ebp,esp 003B1373 sub esp,0E4h 003B1379 push ebx 003B137A push esi 003B137B push edi 003B137C lea edi,ebp-0E4h 003B1382 mov ecx,39h 003B1387 mov eax,0CCCCCCCCh 003B138C rep stos dword ptr es:edi int a=3;003B138E mov dword ptr a,3 int b=2;003B1395 mov dword ptr b,2 int c;c=a+b;003B139C mov eax,dword ptr a 003B139F add eax,dword ptr b 003B13A2 mov dword ptr c,eax c=a-b;003B13A5 mov eax,dword ptr a 003B13A8 sub eax,dword ptr b 003B13AB mov dword ptr c,eax c=a/b;003B13AE mov eax,dword ptr a 003B13B1 cdq 003B13B2 idiv eax,dword ptr b 003B13B5 mov dword ptr c,eax c=a%b;003B13B8 mov eax,dword ptr a 003B13BB cdq 003B13BC idiv eax,dword ptr b 003B13BF mov dword ptr c,edx return 0;003B13C2 xor eax,eax 003B13C4 pop edi 003B13C5 pop esi 003B13C6 pop ebx 003B13C7 mov esp,ebp 003B13C9 pop ebp 003B13CA ret 2. 分析和说明上述三个输出文件中,两个版本的主要指令的流程和实现;.Test.caddu $sp,$sp,-16 ;$sp=$sp+(-16)sw $22,0($sp) ;保存$sp+0到$22sw $23,4($sp) ;保存$sp+4到$23 sw $30,8($sp) ;保存$sp+8到$30la $30,3 ;加载3到$30 la $23,2 ;加载2到$23addu $22,$30,$23 ;$22=$30+$23subu $22,$30,$23 ;$22=$30-$23mul $22,$30,$23 ;$22=$30*$23div $22,$30,$23 ;$22=$30/$23rem $22,$30,$23 ;$22=$30 mod $23 move $2,$0 ;$2=$0lw $22,0($sp) ;$22= memory$SP+0 lw $23,4($sp) ;$22= memory$SP+4lw $30,8($sp) ;$22= memory$SP+8addu $sp,$sp,16 ;$sp=$sp+(16)sum.caddu $sp,$sp,-16 ;$sp=$sp+(-16)sw $23,0($sp) ;保存$sp+0到$23sw $30,4($sp) ;保存$sp+4到$30move $30,$0 ;$30=$0move $23,$0 ;$23=$0move $30,$0 ;$30=$0addu $23,$23,$30 ;$23=$23+$30la $30,1($30) ;加载1到$30la $24,100 ;加载100到$24move $2,$0 ;$2=$0lw $23,0($sp) ;$23=memory$sp+0lw $30,4($sp) ;$30=memory$sp+4addu $sp,$sp,16 ;$sp=$sp+16fun.caddu $2,$4,$5 ;$2=$4+$5.sw $31,20($sp) ;保存$sp+0的结果到$31la $24,1;加载1到$24 sw $24,-4+48($sp) ;保存$sp-4+48的结果到$24la $24,2;加载2到$24sw $24,-8+48($sp);保存$sp-8+48的结果到$24lw $4,-4+48($sp);$4= memory$SP-4+48 lw $5,-8+48($sp);$5= memory$SP-8+48 jal addsw $2,-12+48($sp);保存$sp-12+48的结果到$2move $2,$0;$2=$0L.2:lw $25,16($sp);$25= memory$SP+16lw $31,20($sp);$31= memory$SP+20addu $sp,$sp,48;$sp=$sp+(48)j $313.对比mips和x86指令在实现函数调用方面的差别,基于”函数调用/加和函数”;(1). 需要将返回地址入栈,如MIPS下的 sw $31,20($sp) 一句,就是将函数的返回地址入栈。对于x86架构,由于call命令会自动将返回地址入栈,所以在函数入口处没有返回地址入栈的指令;(2). 需要将调用函数的帧指针入栈,然后设置本身自己函数的帧指针。在x86下,是 push %ebp;mov %esp,%ebp两句,而在MIPS下,是sw $2,-12+48($sp), move $2,$0;两句。这里也可以看出x86的拥有专门入栈指令的特点push的特点;4. 简要分析“诡异的跳转”中的程序为什么会调用show这个函数?int_tmain(intargc,_TCHAR*argv)00411420pushebp00411421movebp,esp00411423subesp,0CCh00411429pushebx0041142Apushesi0041142Bpushedi0041142Cleaedi,ebp-0CCh00411432movecx,33h00411437moveax,0CCCCCCCCh0041143Crepstosdwordptres:ediinta1;a3=(int)show;0041143Emovdwordptrebp+4,offsetshow(4110F0h)getchar();00411445movesi,esp00411447calldwordptr_imp_getchar(4182BCh)0041144Dcmpesi,esp0041144FcallILT+325(_RTC_CheckEsp)(41114Ah)return0;00411454xoreax,eax00411456pushedx00411457movecx,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年呼吸与睡眠医学考试试题及答案
- 三管感染预防及控制考试试题及答案
- (完整版)岩棉保温板施工方案
- 购房合同简单模板4篇
- 青马工程实行方案(3篇)
- 砌体工程搬运方案(3篇)
- 排水提升工程方案(3篇)
- 关于婚产协议书2篇
- 2025年环境污染处理专用药剂材料项目申请报告模范
- 《信号与系统实训指导》课件第6章
- 河南省天一联考2026届高三年级开学联考语文试卷(含答案解析)
- 遴选笔试真题及答案
- 2025-2026学年人教版(2024)小学美术三年级上册教学计划及进度表
- 2025年秋期新教材人音版三年级上册小学音乐教学计划+进度表
- 医疗科室外包合同协议书
- 基于核心素养的中小学安全教育课程设计与实施路径
- 超级充电综合站及配套设施建设项目可行性研究报告
- 2025-2026学年统编版小学语文四年级上册教学计划及进度表
- 2025年湖北省武汉市中考语文真题(含答案)
- 中国心房颤动管理指南2025解读
- 2025-2026学年人教大同版(2024)小学英语三年级上册教学计划及进度表
评论
0/150
提交评论