计算机组成原理 / 反汇编实验(1)

目录

    • 实验内容
    • 实验过程
    • 实验结果

实验内容

需要完成实验资料datalab-handout.tar.gz中bits.c 的函数功能,具体分为三大类:位操作、补码运算和浮点数操作。

  1. 位操作
    表1列出了bits.c中一组操作和测试位组的函数。其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。
    计算机组成原理 / 反汇编实验(1)_第1张图片
  2. 补码运算
    表2列出了bits.c中一组使用整数的补码表示的函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。
    计算机组成原理 / 反汇编实验(1)_第2张图片
  3. 浮点数操作
    表3列出了bits.c中一组浮点数二进制表示的操作函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。注意float_abs的输入参数和返回结果(以及float_f2i函数的输入参数)均为unsigned int类型,但应作为单精度浮点数解释其32 bit二进制表示对应的值。
    计算机组成原理 / 反汇编实验(1)_第3张图片

实验过程

系统版本:Ubuntu 18.04.3 LTS

  1. lsbZero函数
    在这里插入图片描述
  2. byteNot函数
    在这里插入图片描述
  3. byteXor函数
    在这里插入图片描述
  4. logicalAnd函数
    在这里插入图片描述
  5. logicalOr函数
    在这里插入图片描述
  6. rorateLeft函数
    计算机组成原理 / 反汇编实验(1)_第4张图片
  7. parityCheck函数
    计算机组成原理 / 反汇编实验(1)_第5张图片
  8. mul20K函数
    在这里插入图片描述
  9. mult3div2函数
    计算机组成原理 / 反汇编实验(1)_第6张图片
  10. subOK函数
    计算机组成原理 / 反汇编实验(1)_第7张图片
  11. absVal函数
    计算机组成原理 / 反汇编实验(1)_第8张图片
  12. float_abs函数
    计算机组成原理 / 反汇编实验(1)_第9张图片
  13. float_f2i函数

计算机组成原理 / 反汇编实验(1)_第10张图片

实验结果

[btest检测结果]

  1. 使用dlc检查函数实现代码是否符合实验要求的编码规则
    a) 首先通过 ./dlc bits.c运行dlc.exe检测bits.c是否有错,如下图所示,没有输出直接换行,说明完全符合要求
    (linux下执行exe文件需安装wine,$ sudo apt-get install wine-stable)
    在这里插入图片描述
    b) 然后通过-e选项,观察操作符数,均符合要求
    计算机组成原理 / 反汇编实验(1)_第11张图片
  2. 使用btest检查函数实现代码的功能正确性
    a) 首先使用make编译生成btest可执行程序
    在这里插入图片描述
    (需要提前安装make及相关gcc附加库文件
    $ sudo apt-get install gcc-multilib
    $ sudo apt install make)
    b) 调用best检查bits.c中函数功能正确性
    计算机组成原理 / 反汇编实验(1)_第12张图片
    得分35/35,说明函数功能已全部完成

你可能感兴趣的:(汇编)