第三章、汇编语言

背景

大部分人对数值信息都了解七七八八,但汇编了解的人却不多,虽然我学过王爽的《汇编语言》,但那个时候对计算机理解不深刻等于没学,目前在工作中遇到很多相关问题每次查起来很麻烦,这次正好借csapp再系统的梳理一遍,顺便利用拆弹作业做个巩固。

相关知识

C/C++代码变成可执行文件包括4个阶段,分别是预处理、编译成汇编语言、将汇编语言转为机器码、链接。

预处理

把源代码的include和define都替换掉

编译

这个阶段会将源代码转为汇编代码,形式如下,注意,凡是以.开头的如.file都可以理解为汇编代码的注释,不起任何作用,主要是给后面汇编器看生成elf的时候用的
第三章、汇编语言_第1张图片

汇编

汇编就是将上面的代码翻译成二进制,同时不同的代码,全局变量啥的各种乱七八糟的都按照虚拟地址排好,然后成一个elf格式的文件,理论上该文件不需要下一步链接也可以执行。常用readelf和objdump两个分析器来分析该文件。

这里注意,书上里面反汇编还可以看要原始函数名,这是因为保留.symtab和.strtab这两个段,如果去掉的话可以用strip mstore.o(该选项也会去掉重定位信息)来直接去掉,这样反汇编就看不到了,避免竞争对手根据名字快速分析出函数作用。

链接

后面有专门的章节讲解

寄存器
mov指令

你可能感兴趣的:(计算机基础知识,c++)