• 20145339《信息安全系统设计基础》第5周学习总结


    程序的机器级表示

    GCC C语言编译器以汇编代码的形式产生输出,汇编代码是机器代码的文本表示,给出程序的每一条指令。

    intel处理器的模型:

    8086:

    它是第一代单芯片、16位微处理器之一。体系结构上讲只有20位长。

    i386:

    体系结构扩展到了32位,Linux和Windows系列操作系统都是使用的这种模式,这是Intel系列中第一台支持Unix操作系统的机器。

    80286:

    增加了更多的寻址模式,构成了IBM PC—AT个人计算机的基础,这种计算机是MS Windows最初的平台。

    程序编码:

    假设一个c程序,有两个文件p1.c和p2.c。我们用unix命令编译这些的代码如下

    unix> gcc -o1 -c p p1.c p2.c

    "gcc"指的是GCC C编译器,将源代码转换成可执行代码。 “-o1”告诉编译器使用第一级优化。

    在命令行上使用“-s”选项,就能得到c语言编译器的汇编代码c:

    unix> gcc -o1 -s code.c

    在命令行上使用“-c”选项,GCC会编译并汇编该代码:

    unix> gcc -o1 -c code.c

    反汇编器,程序根据目标代码产生一种类似于汇编代码的格式:

    unix> objdump -d code.o

    生成可执行文件prog:

    unix> gcc -O1 -o prog code.o main.c

    我们用下面的命令来启动GDB:

    unix> gdb prog 我们可以以各种方式查看哥哥寄存器和存储器位置

    命令对应的效果:

    quit          退出GDB

    run           运行程序

    kill             停止程序

    stepi         执行第一行指令

    stepi4       执行第四行指令

    nexti         类似于stepi 但以函数调用为单位

    continue    继续执行

    help          获取有关GDB的信息

  • 相关阅读:
    Leap Ftp 3.0注册码
    Access数据库导入到MSSQLServer数据库中的三种办法。
    flash上传插件uploadify详解_图片批量上传_更新数据库
    Winform(c#)手机号码归属地查询的实现
    百度再度出现故障,目前很多地区无法正常访问!
    windows 2000/2003 自动重启/定时重启
    js初步学习
    考研之三战讨论
    C++中的map学习
    BUPT 63T 高才生 找最佳基站
  • 原文地址:https://www.cnblogs.com/dj20145339/p/5967687.html
Copyright © 2020-2023  润新知