上周在课堂上虚拟机整个完全崩掉了,导致在课堂上只能看课本。
现在已经把虚拟机给处理好了,因为win10的操作系统对于5.0之后的虚拟机版本是不兼容的,所以,我在将原来的虚拟机完全卸载之后,重新下载了4.3.12版本的虚拟机,并且对其进行repair修复了几次之后,终于使得虚拟机恢复了正常。

课堂测试一

问题:参考程序,编写一个代码,可以判断一下你的电脑是大端还是小端?

思路:

我们可以用0x22与0x11来区分电脑的大端与小端,首先我们可以定义num为短字节型,也就是两个字节,因为字符是一个字节,所以说,在去掉字符指针c的时候,会取出一个字节出来。如果是小端的话,取出来的数值是0x22,如果是大端的话,取出的数值就是0x11,而在电脑上也会显示出big end或者是small end

课堂测试二

问题:调用附图的代码,编写一个程序能够打印你的四位学号。

思路:首先先把老师所给的函数打上去,然后在编写关于打印自己四位学号的代码

课堂测试三

问题:编写程序并设置断点用gdb调试

思路:首先是先写一个关于自己学号的代码,写好代码之后就是自己用gdb进行调试,首先输入指令gdb 文件名.c 然后一步一步按照提示进行,最后run即可得到最后的结果。

课堂测试4

题目:将下列代码反汇编

思路:我们首先打开一个新文件,并且用自己学号的后两位写c语言代码,需要注意的是,我的学号是09,但是由于int i不能是0加上一个数字,所以我将自己学号的后两位改成了90,随后我们运行命令,gcc -S -o main.s main.s 接着运行ls查看你所书写的内容,最后运行vim main.s即可。

课堂测试5

使用gdb跟踪汇编代码,在纸上画出f中每一条语句引起的函数变化值和栈的变化。提交信息。

思路:

测试5需要我们参考测试4的代码,并且对之输入命令运行,参考(http://www.cnblogs.com/lxm20145215----/p/5982554.html)

我们在其中输入命令即可查看。

出现的问题

首先在进行测试4的时候,无法将其转换成汇编代码。

解决问题:首先,我们还是按照老师所给的代码去编写,然后,最开始的时候,我将老师所给的代码改成了自己的文件名,后来发现这个操作是行不通的,所以就乖乖的用了老师的代码,后来再用vim运行即可查看自己的汇编代码。

感悟

说实话这次的测试难度并不大,并且有学长的博客作为参考,整个测试并不是十分难的,最主要的问题是虚拟机出现了问题,下次一定好好检查机器.

课本2.96

遵循位级浮点编码规则,实现具有如下原型的函数

/*

  • Compute (int) f.
  • If conversion causes overflow or f is NaN, return 0x80000000
  • /
    int float_f2i(flaot_bits f);

对于浮点数f,这个函数计算(int)f。如果f是NaN,你的函数应该向零舍入。如果f不能用整数表示(例如,超出表示范围,或者它是一个NaN),那么函数应该返回0x80000000 。
测试你的函数,对参数f可以取的所有2的32次方个1值求值,将结果与你使用机器的浮点运算得到的结果相比较。

课本2.97

遵循位级浮点编码规则,实现具有如下原型的函数:
/* Compute (float) i */
float_bite float_i2f(int i);

对于函数i ,这个函数计算(float)i的位级表示。测试你的函数,对参数f可以取的所有2的32次方个值求值,将结果与你使用机器的浮点运算得到的2结果相比较。