CH1:
但是如果问什么时候 得到二进制文件 那就是汇编的时候
CH2
sizeof 的返回值是一个无符号数 然后i-D自动默认是一个无符号数 无符号数不能出现负数 所以出现了一个循环 所以永远不可能循环完成。
CH7链接
- 什么是静态库?使用静态库的优点是什么?
(定义3分)编译时将所有相关的目标模块打包成为一个单独的文件用作链接器的输入,这个文件称为静态库。(优点2分)使用时,通过把相关函数编译为独立模块,然后封装成一个单独的静态库文件,应用程序可以通过在命令行上指定单独的文件名来使用这些在库中定义的函数,链接器只需复制被程序引用的目标模块,减少了可执行文件在磁盘和内存中的大小;同时,应用程序员只需包含较少的库文件的名字
- 简述C编译过程对非寄存器实现的int全局变量与非静态int局部变量处理的区别。包括存储区域、赋初值、生命周期、指令中寻址方式等。
int全局变量 | int局部变量 | |
存储区域 | 数据段 | 堆栈段 |
赋初值 | 编译时 int x=1; | 程序执行时,执行数据传送类指令 如 MOVL $1234, 8(RSP) |
生命周期 | 程序整个执行过程中都存在 | 进入子程序后在堆栈中存在(如执行subq $8, %rsp)子程序返回前清除消失 |
指令中寻址方式 | 其地址是个常数, 寻址如 movl 0x806808C, %eax | 通过rsp/rbp的寄存器相对寻址方式。 如类似 (%rsp) 或8(%rsp)或-8(%rbp)等 |
CH8
进程的上下文
下面是几种上下文 上一下文相当于承担了保护现场的功能。
CH8
进程的返回位置
关键是注意 子进程可以有两个输出
父子进程的物理地址是不相同的。
地址翻译过程
(2) 16/4
(3) 一共是12位 然后块内地址是两位,组是十六组 所以是四位 12 -2 -4
CH9