zoukankan      html  css  js  c++  java
  • 作业补交

    作业补交

    课堂测试二

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

    遇到的问题

    1.返回值的类型定义错误;

    如图:

    解决:在主函数前加上int

    课堂测试三

    编写一个程序 “week0603学号.c",运行下面代码:

    1 short int v = -学号后四位

    2 unsigned short uv = (unsigned short) v

    3 printf("v = %d, uv = %u ", v, uv);

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

    3 分析p /x v; p /x uv 与程序运行结果的不同和联系

    遇到的问题:

    问题:在GDB调试过程中,一开始将断点设置在第四行,运行的结果输出不是我的学号,而是0;

    解决:最后发现我设置断点太早,导致运行在赋值之前,就导致了赋值结果为0;所以我将断点设置在第六行,结果为十六进制的

    课堂实验三

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

    在编译过程中遇到了很多的问题,比如输入gcc - g example.c -o example -m32会显示fatal error: sys/cdefs.h: No such file or directory,查了资料以后说没有环境需要输命令下载sudo apt-get install libc6-dev-i386,

    步骤

    • gcc -g week06055239.c -o week06055239 -m32编译程序
    • gdb week06055239进入gdb模式
    • 设置断点在main函数调用f函数的位置gdb> b 10
    • gdb> run运行
    • gdb> disassemble反汇编
    • display /i $pc
    • i r
    • x查看内存中的内容
    • si执行下一条汇编
  • 相关阅读:
    使用EF进行简单的增删改查
    观察者模式(委托事件的小应用)
    lambda表达式和表达式树
    socket知识总结
    xml读写Demo
    winfrom DataGridView Demo
    6月26号.NET面试题(程序题部分)只要做懂这3道题肯定能脱离菜鸟称号!
    多线程与异步编程知识简单总结
    15年6月14号面试中没有回答出来的问题
    2020.5.15记一次阿里电话面试经历
  • 原文地址:https://www.cnblogs.com/lyx1996/p/7751028.html
Copyright © 2011-2022 走看看