2018-2019-1 20165230 《信息安全系统设计基础》第三周学习总结
教材学习内容总结
- 存储器系统的实际实现是将多个硬件存储器和操作系统软件组合起来。
- 有效地址的计算方式
Imm(Eb,Ei,s) = Imm + R[Eb] + R[Ei]*s
- ISA:指令集体系结构,它定义了处理器状态、指令的格式、以及每条指令对状态的影响。
- 如果我们想要在64位机器上得到32位代码,可以使用指令
gcc -m32 -S xxx.c
- C语言数据类型在X86中对应的表示
gcc -S xxx.c -o xxx.s
获得汇编代码,也可以用objdump -d xxx
反汇编;- 栈帧:过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。逻辑上讲,栈帧就是一个函数执行的黄精:函数参数、函数的局部变量、函数执行完后返回到哪里等等。
- 在栈帧中,栈向低地址方向增长。所以,如果我们想要增大栈的空间,要做的是将栈指针的值减小而不是增大。每个函数的每次调用都有自己独立的一个栈帧,即里面维持着所需要的各种信息。寄存器ebp指向当前的栈帧的地步(高地址),寄存器esp指向当前的栈帧顶部(低地址)。
- 运行GCC编译器产生一个汇编文件code.s:
gcc -Og -S code.c
- 使用-c命令选项,GCC编译并汇编该代码得到code.o:
gcc -c code.c
教材学习中的问题和解决过程
- 问题1:leap指令和movq指令有什么区别?
- 问题1解决方案:movq指令属于MOV类(最简单形式的数据传送指令),movq表示传递4字节。而leap是从内存读数据到寄存器,但实际上并未引用内存。
- 问题2:
-0g
表示什么优化等级,优化等级有哪些? - 问题1解决方案:
编译选项-Og告诉编译器使用会生成符合原始C代码整体结构的机器代码的优化等级。从得到的程序性能考虑,较高级别的优化(-O1或者-O2)
代码调试中的问题和解决过程
暂无
代码托管
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第二周 | 30 | 1/1 | 8 | |
第三周 | 198/228 | 2/3 | 12/20 | |
第四周 | ||||
第五周 |
反思
最近学习状态非常不好,对待学习的态度也有所懈怠。上周考试给我敲响了警钟,在接下来的日子里,要好好的认真的弥补欠下的帐。
原文地址:https://www.cnblogs.com/tiankunye/p/9787025.html
时间: 2024-10-01 04:03:49