CSAPP: Architecture Lab

介绍

本实验是将CSAPP家庭作业后面的几个问题组合成实验作业。在实验中,我们需要修改处理器的HCL描述来增加新的指令、修改循环策略等,修改后的处理器能够被模拟,并通过运行自动化测试检测。

在本实验中,我们需要掌握Y86相关汇编语言的操作、以及对于Y86 HCL描述,并且对于流水线、程序的优化有一定的了解。

实验准备

  1. 下载实验包:archlab-handout.tar
    (1)相关实验包可以到以下地址下载,里面还包含详细的答案,原始tar在CSAPP Lab original tar 文件夹下https://github.com/Davon-Feng/CSAPP-Labs。本文解答的内容在yzf-archlab_handout文件夹中
    https://github.com/Davon-Feng/CSAPP-Labs/tree/master/yzf-archlab-handout

    (2)载入tar文件后,需要运用 tar xvf archlab-handout.tar将文件解压。里面包含README, Makefile, sim.tar, archlab.ps, archlab.pdf, and simguide.pdf.

    (3)然后运用tar命令解压sim.tar文件,进入sim文件夹执行以下命令

    unix > cd sim
    unix > make clean ; make
    

在make过程中遇到以下问题:(1).usr/bin/ld: cannot find -lfl (2).make: bison:命令未找到 (3) .make: flex:命令未找到
对于第(1)个问题,运用sudo apt-get install libfl.so解决
对于第(2、3)个问题,运用sudo apt-get install bison flex解决

2.学习和掌握《深入理解计算机系统》第二版中第4章、第五章

Part A

该实验中的任务为在sim/misc文件夹中,运用Y86指令撰写并且模拟example.c文件中的三个函数的功能。并且运用YAS进行编译,运用YIS进行运行。Y86汇编程序的编写规则见CSAPP书本的P237页,Y86程序
本博主实现代码文件,见之前链接下载文件中sim/misc文件夹下的如下所示文件
这里写图片描述

相关编译运行代码如下
unix > ./yas A-sum.ys
unix > ./yis A-sum.yo

  1. 对下面的链接Sample linked list数据进行操作,实现sum_list()函数的功能
# Sample linked list  实验数据
        .align 4
        ele1:
                .long 0x00a
                .long ele2
                .long 0x0b0
                .long ele3
        ele3:
                .long 0
        ele2:
                .long 0xc00

        /* linked list element */ 链表的定义
        typedef struct ELE {
            int val;
            struct ELE *next;
        } *list_ptr;
对于该实验要求作出的解答如下:
# 函数执行开始地址为0
        .pos    0
 init:  irmovl  Stack, %esp
        irmovl  Stack, %ebp
        call    Main
        halt

 # Sample linked list 函数操作中需要运用到的数据定义
        .align  4
 ele1:  
        .long   0x00a
        .long   ele2
 ele2:  
        .long  
  • 20
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值