20145209 《信息安全系统设计基础》第10周学习总结

本文总结了《信息安全系统设计基础》课程第10周的学习内容,重点介绍了冯诺依曼体系结构、X86汇编语言基础及常用指令、寻址方式等内容,并对比了AT&T与Intel汇编格式的不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20145209 《信息安全系统设计基础》第10周学习总结

教材学习内容总结

存储程序计算机工作模型

冯诺依曼体系结构:即具有存储程序的计算机体系结构,目前大多数拥有计算和存储功能的设备(智能手机、平板、计算机等)其核心构造均为冯诺依曼体系结构。

IP:寄存器,总是指向内存的代码段。IP(16位) 32位(EIP) 64位(RIP)。
内存:保存数据和指令。

CPU:CPU从IP指向的内存地址取指令执行,执行之后IP自加一,然后继续执行

for(;;){

next instruction

}

API:应用程序编程接口。程序员与计算机的接口界面。

ABI:程序与CPU接口界面(二进制编码)。

X86汇编基础

X86寄存器

通用寄存器:

段寄存器:

CS:代码段寄存器,存储指令。CPU取指令时根据CS+eip来确定指令的地址。

DS:数据段寄存器,存储数据段的段值。

SS:堆栈段寄存器,存储堆栈段的段值。

FS、GS、ES:附加段寄存器,存储附加数据段的内容。

常用汇编指令

movl

pushl %eax:将eax寄存器放进堆栈的栈底。

subl $4,%esp

movl %eax,(%esp)

popl %eax:将栈顶的数值放入eax里面。

movl (%esp),%eax

addl $4,%esp

call 0x12345:函数调用,调用0x12345这个地址。

pushl %eip(*)

movl $0x12345,%eip(*)

ret:将函数调用时候保存的eip出栈,执行函数调用之后的下一条指令。

popl %eip(*)

enter:将栈置为空

pushl %ebp

movl %esp,%ebp

leave:撤销函数堆栈,释放内存空间

movl %ebp,%esp

popl %ebp

注意:( * )表示伪指令,实际上程序员不能直接修改eip,会有安全隐患

常用寻址方式

寄存器寻址:%+寄存器名称,与内存无关。

movl %eax,%edx edx=eax;

立即寻址:$+16进制的数字,将数值直接放进寄存器当中,与内存无关。

movl $0X123,%edx edx=123;

直接寻址:一个16进制数字表示一个地址。

movl 0x123,%edx edx=(int32_t)0x123;

间接寻址:寄存器的值表示一个内存地址,将这个内存地址中的值放进寄存器中。

movl (%ebx),%edx edx=(int32_t)ebx;

变址寻址:括号外面的数字表示寄存器地址加一个立即数。

movl 4(%ebx),%edx edx=(int32_t)(ebx+4);

注意:AT&T汇编格式与Intel汇编格式略有不同,linux内核使用的是AT&T汇编格式。

附录A——错误处理

(1).Unix风格的错误处理:函数返回值包括错误代码,也包括有用的结果

(2).Posix风格的错误处理:返回0表示成功,返回非0表示失败;任何有用的结果都返回在通过引用传递进来的函数参数中。

(3).DNS风格的错误处理:函数失败时返回NULL指针,并设置全局变量h_errno

标准I/O(高级输入输出函数)

fopen/fclose:打开和关闭文件

fread/fwrite:读和写字节

fgets/fputs:读和写字符串

scanf/printf:复杂格式化的I/O函数

•- O_RDONLY:只读。

•- O_WRONLY:只写。

•- O_RDWR:可读可写。

•- O_CREAT,表示如果文件不存在,就创建它的一个截断的文件。

•- O_TRUNC:如果文件已经存在,就截断它。

more

1.把文件内容分屏导出到屏幕

2.more filename more<filename command|more

3.实现

•打开文件

•读取内容

•显示24行到屏幕(如果回车,显示下一行;如果空格,显示下一屏;如果输入q,退出)

•关闭文件

参考资料
《深入理解计算机系统V2》学习指导
《深入理解计算机系统》
每周检测解析
...

学习感想

这周我学习了卢肖明同学和蔡野同学的博客,通过阅读其他同学的几篇博客来加深对这门课的理解,再动手实践一下,我觉得还是有些收获的。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周200/2002/220/20
第二周300/5002/418/38
第三周500/10003/722/60
第四周300/13002/930/90

参考资料

转载于:https://www.cnblogs.com/liuyiyang/p/6083002.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值