20171025课堂实践+课后习题
20171025课堂实践+课后习题
第三题
思路:
- 写一个关于自己学号的代码,然后用GDB进行调试。
`short int v = -学号后四位
unsigned short uv = (unsigned short) v
printf("v = %d, uv = %u\n ", v, uv);`
- 在第三行设置断点用gdb调试,用p /x v; p /x uv 查看变量的值,提交调试结果截图,要全屏,要包含自己的学号信息
代码:
`#include <stdio.h>
void main(){
short int v = -23;
unsigned short uv = (unsigned short)v;
printf("v=%d,uv=%u\n",v,uv);
}`
第四题
思路:
- 1 通过输入gcc -S -o main.s main.c 将c程序”week0604学号.c“编译成汇编代码
- 删除汇编代码中 . 开关的代码,提交f 函数的汇编代码截图,图中用矩形标出函数栈帧的形成和销毁的代码
第五题
思路:
- 使用gdb跟踪汇编代码,在纸上画出f中每一条语句引起的函数变化值和栈的变化。提交信息。
代码托管
课本2.96
遵循位级浮点编码规则,实现具有如下原型的函数
/*
Compute (int) f.
If conversion causes overflow or f is NaN, return 0x80000000
/int floatf2i(flaotbits f);
对于浮点数f,这个函数计算(int)f。如果f是NaN,你的函数应该向零舍入。如果f不能用整数表示(例如,超出表示范围,或者它是一个NaN),那么函数应该返回0x80000000 。 测试你的函数,对参数f可以取的所有2的32次方个1值求值,将结果与你使用机器的浮点运算得到的结果相比较。
心得:
这道题中我学到了新的-lm
指令,在Linux中用该指令可以连接数学库。
课本2.97
遵循位级浮点编码规则,实现具有如下原型的函数:
/* Compute (float) i */
floatbite floati2f(int i);
对于函数i ,这个函数计算(float)i的位级表示。测试你的函数,对参数f可以取的所有2的32次方个值求值,将结果与你使用机器的浮点运算得到的2结果相比较。