深入理解计算机系统arch lab

这里写图片描述

Arch lab

一:实验梗概

在这个lab中,分为PartA,PartB,PartC。在PartA中,你要编写Y86-64程序.在PartB中,你要给SEQ处理器添加iaddq指令。在PartC,你要优化你的程序。

file contains
misc YAS和YIS
seq SEQ处理器
pipe PIPE处理器
y86_code 书上的y86代码
ptest 测试脚本
Makefile Makefile
README README

工具

YAS
Y86-64汇编器,输入.ys结尾的y86 code,输出.yo结尾的object code。

./yas ./asum.ys       //会输出asum.yo文件

YIS
Y86-64指令模拟器,输入.yo结尾的object code,输出执行结果

./yis ./asum.yo     //会输出asum.yo程序情况

SEQ
SEQ+
PIPE
SEQ处理器对应于ssim(这个可执行文件),PIPE处理器对应于psim

-h help
-g gui模式
-t 输出处理器执行和ISA执行的差异(用来检测处理器是否遵守ISA)
./ssim -t <../a.yo     //ssim执行a.yo




PART A

在sim/misc文件里,有*examples.c**文件,里面有三个函数,sum,rsum,copy。编写这三个函数的y86-64code.


sum.ys

#Execution begins at address 0,written by peanwang
	.pos 0
	irmovq stack,%rsp
	call main
	halt
# Sample linked list
	.align 8
ele1:
	.quad 0x00a
	.quad ele2
ele2:
	.quad 0x0b0
	.quad ele3
ele3:
	.quad 0xc00
	.quad 0
#This is main function
main:
	irmovq ele1,%rdi
	call sum_list
	ret 
#long sum_list(list_ptr ls)
# ls in %rdi ,return i %rax
sum_list:
	irmovq $0,%r14
        irmovq $0,%rax
L2:
        subq %r14,%rdi
        je L4
	mrmovq (%rdi),%r13
        addq %r13,%rax
	mrmovq 8(%rdi),%rdi
        jmp     L2
L4:
        ret

#stack starts here and grows to lower addresses
	.pos 0x200
stack:

这里写图片描述


rsum.ys

#rsum.ys,written by peanwang
	.pos 0
	irmovq stack,%rsp
	call main
	halt
# Sample linked list
	.align 8
ele1:
	.quad 0x00a
	.quad ele2
ele2:
	.quad 0x0b0
	.quad ele3
ele3:
	.quad 0xc00
	.quad 0

#main function
main:
	irmovq ele1,%rdi
	call rsum_list
	ret

#rsum_list(list_ptr ls)
#ls in %rdi,  return in %rax
rsum_list:
  irmovq $0,%r14
  subq %r14,%rdi
  je L7
  pushq %rbx
  mrmovq (%rdi), %rbx
  mrmovq 8(%rdi), %rdi
  call rsum_list
  addq %rbx,%rax
  popq %rbx
  ret
L7:
  irmovq $0,%rax
  ret

#stack starts here and grows to lower address
	.pos 0x200
stack:

这里写图片描述


copy.ys

#copy.ys,written by peanwang
	.pos 0
	irmovq stack,%rsp
	call main
	halt

#two block
	.align 8
# Source block
src:
	.quad 0x0
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值