博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第四章家庭作业4.45
阅读量:5102 次
发布时间:2019-06-13

本文共 696 字,大约阅读时间需要 2 分钟。

第四章家庭作业---4.45

题目要求:

A 用指针索引的方式编写相同的数组索引的冒泡程序C代码

B 将所得的C程序用Y86程序表述出来

解题思路:

1 将题目所给的数组元素代码转换成指针索引的代码

具体方法为:将指针赋给数组的头地址,然后按位移动指代

C格式:int *data=a;

*(data+i);

2 将程序复写,并加入头文件以及主函数使其能正常调用以及相应传参

3 将所得的C程序汇编一下获得相应的汇编代码

格式:gcc -S xxx.c  -o  xxx

4 利用所得的汇编代码,用正则表达式去掉相应的“."与无关项之后进行Y86代码替换

涉及格式:g/\.\d; dd

5 将所得的Y86代码与用机器产生的反汇编代码比对,验证准确性

解题过程:

 

对应对比及修改:

注意事项:

1 对应的指针代码要在能运行与检测的基础上构建,在调用相应的冒泡程序时,因先利用GCC -G后调试一下

带来的问题:在没有可执行的程序做保证的话会由于书写错误或者指代错误等错误因素导致数据意外存储而没有报错,这样无法得到汇编及正确的代码

2 在可执行的C代码汇编版本中:movl指令对应的Y86指令有三个,要注意区分三者后带的参数类型

3 Y86没有相应的乘除法操作,要转换成加减或者与,抑或运算完成,为方便起见,规定的数据不讨论符号,对于乘除法操作,以最优解替换

实验总结:

本次家庭作业相对的难点在于如何利用基本的加减,与等操作完成复杂的移位乘除等复杂算法,对于更好理解机器的运算过程有较好的帮助

转载于:https://www.cnblogs.com/chuishi/p/4925567.html

你可能感兴趣的文章
WordPress Cart66 Lite插件跨站请求伪造漏洞
查看>>
requestLayout invalidate postInvalidate
查看>>
Objective-C GCD深入理解
查看>>
关于static的使用
查看>>
linux basename学习
查看>>
作业2(4)
查看>>
C#: switch语句的重构『网摘』
查看>>
12.9——周总
查看>>
Windows 7 下 PHP 开发环境搭建(手动)
查看>>
在腾讯云服务器上实现java web项目部署
查看>>
linux文档常见后缀名
查看>>
C++关键字 explicit
查看>>
为什么要使用自增ID作为主键
查看>>
C#—异步编程
查看>>
Hibernate查询
查看>>
dialog组件
查看>>
Python(2.7.6) 迭代器
查看>>
Spring IOP 面向切面编程
查看>>
FreeBSD11配置local_unbound做dns缓存和转发
查看>>
JS面向对象
查看>>