标签:实现 运行 .com 符号表 命令选项 sem des 过程 调试
机器级程序使用的存储器地址是虚拟地址,提供的存储器模型看上去是一个非常大的字节数组。存储器系统实际表现是将多个硬件存储器和操作系统软件组合起来。
特点:可读性相较于机器代码更好的文本格式表示
指令格式:OPER [DEST [, SRC]] ;注释
gcc -Og -S code.c
//-Og表示优化程度,比如-01表示使用第一级优化,优化的级别与编译时间和最终产生代码的形式都有关系。
gcc -c code.c
目标代码:二进制形式,无法直接查看,机器实际执行的程序只是对一系列指令进行编码的字节序列。
objdump -d code.o
浮点寄存器:一组向量寄存器可以存放一个或多个证书或浮点数值。
X86-64的中央处理单元(cpu)包含一组16个存储64位值的通用目的寄存器
```
CF:进位标志
ZF:零标志
SF:符号标志
OF:溢出标志
```
C语言do-while循环:
do
body-statement
while(test-expr);
汇编实现形式:
loop:
body-statement
t = test-expr;
if(t)
goto loop;
存储器寻址:操作数存放在存储器中,指令中给出操作数的偏移地址信息。
分配和释放内存
寄存器中的局部存储空间
栈帧:过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。逻辑上讲,栈帧就是一个函数执行的黄精:函数参数、函数的局部变量、函数执行完后返回到哪里等等。
延伸方式:栈是从高地址向低地址延伸。每个函数的每次调用都有自己独立的一个栈帧,即里面维持着所需要的各种信息。寄存器ebp指向当前的栈帧的地步(高地址),寄存器esp指向当前的栈帧顶部(低地址)。
结构的所有组成部分都存放在一段连续区域内,结构的指针就是结构第一个字节的地址。
对于大多数x86-64指令来说,保持数据对齐能够提高效率,但是它不会影响程序的行为。
问题1解决方案:在编译的时候,没有加-g的选项,导致没有产生调试符号。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 124/124 | 1/1 | 9/9 |
2018-2019-1 20165228 《信息安全系统设计基础》第三周学习总结
标签:实现 运行 .com 符号表 命令选项 sem des 过程 调试
原文地址:https://www.cnblogs.com/cloud795/p/9786123.html