博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20155336 2017-2018 1 《信息安全系统设计基础》2017-10-25课堂实践
阅读量:5257 次
发布时间:2019-06-14

本文共 1626 字,大约阅读时间需要 5 分钟。

20155336 2017-2018 1 《信息安全系统设计基础》2017-10-25课堂实践

第三题

思路

:首先是先写一个关于自己学号的代码,然后根据之前所学的GDB进行调试。

  • 编写一个程序 “week0603学号.c",运行下面代码:
  • 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
main(){short int v = -36unsigned short uv = (unsigned short) v;printf("v = %d, uv = %u\n ", v, uv);}

qd0ba.png

  • 感悟:一开始定义的数是有符号数,二进制表示下,最高位的“1”不计入数值;将其强制转换为无符号数之后,二进制表示其实并没有发生改变,因此使用“p/x”查看的时候,v和uv的结果是一样的。

第四题

思路

  • 新建一个.c用自己学号的后两位写c语言代码
  • gcc -S -o main.s main.s
  • 接着运行ls查看你所书写的内容
  • 最后运行vim main.s即可。

通过输入gcc -S -o main.s main.c 将下面c程序”week0603学号.c“编译成汇编代码

int g(int x){    return x+3;    }    int f(int x){    int i = 学号后两位;    return g(x)+i;    }    int main(void){    return f(8)+1;    }
  1. 删除汇编代码中 . 开关的代码,提交f 函数的汇编代码截图,图中用矩形标出函数栈帧的形成和销毁的代码

代码

int g(int x){    return x+3;    }    int f(int x){    int i = 36;    return g(x)+i;    }    int main(void){    return f(8)+1;    }

qdTAW.png

第五题

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

参考

7k3Ce.png

感悟

自己每次对题目的理解不到位,课上觉得题目都特别的难,但是课下之后再看,经过自己的认真思考,然后请教别人,都会觉得,原来就是这样啊。可能自己真的对于代码这方面不感冒。希望下次能够在课堂上就能够完成老师布置的任务。.

课本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值求值,将结果与你使用机器的浮点运算得到的结果相比较。

7ZubW.png

课本2.97

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

/* Compute (float) i */

float_bite float_i2f(int i);

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

7ZCKw.png

转载于:https://www.cnblogs.com/hxl681207/p/7988816.html

你可能感兴趣的文章
dom节点相关问题
查看>>
【CF 453A】 A. Little Pony and Expected Maximum(期望、快速幂)
查看>>
LINUX下通过外部SMTP发邮件 (直接抛弃sendmail和postfix)
查看>>
Hdoj 1517.A Multiplication Game 题解
查看>>
杂谈:Servlet(2)
查看>>
内联函数 在ios中的运用 --黄仁斌
查看>>
UVa 10305 - Ordering Tasks ( 拓扑排序, DFS, DAG )
查看>>
24. Spring Boot环境变量读取和属性对象的绑定【从零开始学Spring Boot】
查看>>
poj 3259 Wormholes ([kuangbin带你飞]专题四 最短路练习)
查看>>
数据库查询出来的数据放入表格中
查看>>
ajax获取值的两种方法
查看>>
电梯调度实施
查看>>
【POJ】3667 Hotel
查看>>
static 成员变量以及static成员函数
查看>>
Http
查看>>
2017.9.15 mybatis批量插入后实现主键回填
查看>>
如何设置Jquery UI Menu 菜单为横向展示
查看>>
git操作图
查看>>
C++编程思想3-利用C++进行文件操作封装C函数
查看>>
Angular中使用Swiper不能滑动的解决方法
查看>>