• 2017-2018-1 20155326 《信息安全系统设计基础》第六周课上作业


    2017-2018-1 20155326 《信息安全系统设计基础》课上课下作业

    第一题

    • 编写一个程序,判断一下你的电脑是大端还是小端。

    第二题

    1. 编写一个程序,用show_int(), show_float()打印一下4位学号,参考教材P33打印出匹配的位序列。

    2. 参考教材p82,给出出匹配的位序列的推导过程

    第三题

    1. 编写一个程序 ,运行下面代码:
      short int v = -学号后四位
      unsigned short uv = (unsigned short) v
      printf("v = %d, uv = %u ", v, uv);

    2. 在第三行设置断点用gdb调试,用p /x v; p /x uv 查看变量的值,提交调试结果截图,要全屏,要包含自己的学号信息

    第四题

    1. 通过输入gcc -S -o main.s main.c 将下面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;
      }

    2. 删除汇编代码中 . 开关的代码,提交f 函数的汇编代码截图,图中用矩形标出函数栈帧的形成和销毁的代码

    第五题

    1. 通过输入gcc -S -o main.s main.c 将下面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. 参考http://www.cnblogs.com/lxm20145215----/p/5982554.html,使用gdb跟踪汇编代码,在纸上画出f中每一条语句引起的eip(rip),ebp(rbp),esp(rsb),eax(rax)的值和栈的变化情况。提交照片,要有学号信息。

    无32位环境,于是进行安装。

    gdb调试设置断点,r

    使用disassemble指令获取汇编代码,用i(info) r(registers)指令查看各寄存器的值:

    此时主函数的栈基址为0xffffd038。

    结合display命令和寄存器或pc内部变量,做如下设置:display /i $pc,这样在每次执行下一条汇编语句时,都会显示出当前执行的语句。下面展示每一步时%eip、%ebp、%esp、%eax和堆栈内容的变化:

    接下来重复上述步骤得到下图表:

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

    • 过程:

    课本2.97

    • 题目:

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

    /* Compute (float) i */
    
    floatbite floati2f(int i);
    

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

    • 过程:

    我觉得对于我来说有点难理解,询问同学后还是不会写:(

  • 相关阅读:
    NAT(网络地址转换)
    go从文件中读取json字符串并转换
    实现守护进程
    c++ uconcontext.h实现协程
    bzoj 1085骑士精神
    在线代码评测机
    基于时间轮的定时器
    内存管理(一)
    二叉树的先序中序后序(非递归)
    RDD操作
  • 原文地址:https://www.cnblogs.com/lmc1998/p/7750251.html
Copyright © 2020-2023  润新知