信息安全系统设计基础 第5周学习笔记
第三章 程序的机器级表示
一、处理器历史——摩尔定律
摩尔定律是由英特尔(Intel)创始人之一戈登·摩尔(Gordon Moore)提出来的。
其内容为:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18-24
个月翻一倍以上。这一定律揭示了信息技术进步的速度。
二、程序编码
linux默认编译器——gcc c编译器
过程:
后缀名解释:
gcc常用选项:
三、数据格式
char—字节—b
short—字—w
int—双字—l
long int—双字—l
long long int—/—/
char*—双字—l
float—单精度—s
double—双精度—l
long double—扩展精度—t
四、寻址方式
立即寻址方式、寄存器寻址方式、直接寻址方式、寄存器间间接寻址、寄存器相对寻址方式(或称直接变址寻址方式)、基址变址寻址方式、相对基址变址寻址方
式、比例变址寻址方式、基址比例变址寻址方式、相对基址比例变址寻址方式
五、指令
mov —— 传送数据
add —— 加
sub —— 减
imul —— 乘(有符号)
xor —— 异或
or —— 或
and —— 与
leal —— 传送地址
inc —— 加一
dec —— 减一
neg —— 取负 ?
not —— 取补 ?
sal (shl)—— 左移
sar —— 算术右移
shr —— 逻辑右移
loop —— 循环
跳转指令:略
六、标志位
常见的条件标志位:
CF:进位标志
ZF:零标志
SF:符号标志
OF:溢出标志
标志位相应的位置:
七、使用
call —— 调用
ret —— 返回(相当于c语言的return)
八、实验
实验代码:
汇编原代码:
去掉带.代码行的汇编代码:
*参考资料:
1.嵌入式Linux应用程序开发标准教程.pdf
2.https://www.shiyanlou.com/courses/413
遇到的问题:
1.汇编指令与上学期学的有些出入……
例如:书上neg是取负指令,not是取补指令,但是汇编书上neg是取补指令,not是取反指令。
2.使用gdb的bt/frame/up/down 指令时,不知为何总是显示“no stack”。