没有合适的资源?快使用搜索试试~ 我知道了~
首页Archlab实验报告.pdf
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/11206262/bg1.jpg)
Archlab 实验报告
Part A
1. SUM.YS 计算链表的和
简要说明
将链表起始地址存入%edi
将求和结果存入%eax
用一个循环实现加和,当到达最末尾元素,用 andl 判断,再 jne 指令跳出
结果显示,%eax=0x00000cba.
每行程序对应 C 语言
.pos 0
init: irmovl Stack,%esp
call Main
halt
.align 4
list:
ele1:
.long 0x00a
.long ele2
ele2:
.long 0x0b0
.long ele3
ele3:
.long 0xc00
.long 0
Main: irmovl list,%edi
call sum_list
ret
sum_list:
irmovl $0,%eax
Loop:
mrmovl (%edi),%ecx
addl %ecx,%eax
mrmovl 4(%edi),%edi
andl %edi,%edi
#Execution begins at address 0
#set up stack pointer
#execute main program
#terminate program
#list of 3 elements
#get ls
#sum_list(list_ptr ls)
#int val=0
#while
#get ls->val
#val+=ls_val
#ls=ls->next
#if ls==0
![](https://csdnimg.cn/release/download_crawler_static/11206262/bg2.jpg)
jne Loop
ret
.pos 0x200
Stack:
#stop when 0
#return
#stack starts here and grows to lower
addresses
2. RSUM.YS 递归计算链表的和
简要说明
将链表起始地址存入%edi
将求和结果存入%eax
利用栈结构实现递归循环:每次把 val 值压入栈,并且触发 call 函数跳转,直到读
到末尾元素,把%eax 值赋 0;然后依次 ret 回到上一级位置,再将 pop 出来的 val
值和当前%eax 值相加并存入%eax,循环,一直到 ret 回主函数。
结果显示,%eax=0x00000cba
每行程序对应 C 语言
.pos 0
init: irmovl Stack,%esp
call Main
halt
.align 4
list:
ele1:
.long 0x00a
.long ele2
ele2:
.long 0x0b0
.long ele3
ele3:
.long 0xc00
.long 0
Main:
irmovl list,%edi
call rsum_list
ret
rsum_list:
loop:
#Execution begins at address 0
#set up stack pointer
#execute main program
#terminate program
#list of 3 elements
#get ls
#rsum_list(list_ptr ls)
#while
![](https://csdnimg.cn/release/download_crawler_static/11206262/bg3.jpg)
andl %edi,%edi
je zero
mrmovl (%edi),%edx
pushl %edx
mrmovl 4(%edi),%edi
call rsum_list
popl %edx
addl %edx,%eax
jmp end
zero:
irmovl $0,%eax
ret
end:
ret
.pos 0x100
Stack:
#if ls==0
#jump to zero if ls==0
#get ls->val
#put ls->val on the stack
#ls=ls->next
#iteration
#get current val
# rest=val+rest
#return 0
#return to last address
#return to last address
#stack starts here and grows to lower
addresses
3. COPY.YS 复制并计算异或
简要说明
将 src 首地址存入%edi,将 dest 首地址存入%esi
将异或结果存入%eax
用一个循环实现:将(%edi)存入(%esi),由于 Y86 指令中没有 mmmovl 指
令,因此需要借助%ecx 来实现,即先 mrmovl,再 rmmovl。然后将%ecx 和%eax
异或,即是 c 语言中的 result^=val。然后对%edi 和%esi 分别加 4,对 %edx(len)
减 1,通过判断 len 是否为 0,跳出。
结果显示,%eax=0x00000cba
每行程序对应 C 语言
.pos 0
init:
irmovl Stack, %esp
call Main
halt
.align 4
src:
.long 0x00a
.long 0x0b0
.long 0xc00 # Destination block
#Execution begins at address 0
#set up stack pointer
#execute main program
#terminate program
#source block
剩余10页未读,继续阅读
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![tgz](https://img-home.csdnimg.cn/images/20210720083646.png)
![bds](https://img-home.csdnimg.cn/images/20210720083646.png)
![tar](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![dmg](https://img-home.csdnimg.cn/images/20210720083646.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
菜鸡本菜
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 藏经阁-应用多活技术白皮书-40.pdf
- 藏经阁-阿里云计算巢加速器:让优秀的软件生于云、长于云-90.pdf
- 藏经阁-玩转AIGC与应用部署-92.pdf
- 藏经阁-程序员面试宝典-193.pdf
- 藏经阁-Hologres 一站式实时数仓客户案例集-223.pdf
- 藏经阁-一站式结构化数据存储Tablestore实战手册-206.pdf
- 藏经阁-阿里云产品九月刊-223.pdf
- 藏经阁-2023云原生实战案例集-179.pdf
- 藏经阁-Nacos架构&原理-326.pdf
- ZTE电联中频一张网配置指导书
- 企业级数据治理之数据安全追溯
- MISRA-C 2012-中文翻译版.pdf
- 藏经阁-《多媒体行业质量成本优化及容灾方案白皮书》-37.pdf
- 藏经阁-浅谈阿里云通用产品线Serverless的小小演化史-23.pdf
- 藏经阁-冬季实战营第一期:从零到一上手玩转云服务器-44.pdf
- 藏经阁-云上自动化运维宝典-248.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)