[OS] 汇编语言
2024-10-13 06:12:20
操作系统
- 每个进程拥有一片连续的内存空间(地址空间),空间中的每个字节都可以用一个32位无符号整数定位,每个字节的位置称为地址
CPU
- 32位:能够处理的数据最大为32bit,地址空间2^32<4G
- 64位:能够处理的数据最大为64bit,地址空间2^64
寄存器
- EAX、EBX、ECX、EDX:通用寄存器
- ESI、EDI、EBP:存储内存地址
- EIP、ESP
- PSW
工作过程
- 从寄存器取出一个数据(地址空间中的地址),然后CPU加载这个数据指向的若干字节的数据组成的指令,随即读取寄存器下一个字节处的地址
- 一个指令分为三部分:操作、参数、参数定位方式
三种代码
- 本地代码:二进制机器码
- 汇编代码:用助记符表示的本地代码(汇编代码——汇编——本地代码)
- 源代码:高级语言编写的代码(源代码——编译——汇编代码)
gcc命令
- 编译流程:源程序-->预处理(.i)-->编译(.s)-->汇编(.o)-->链接(可执行程序)
- 默认:预处理+编译+汇编+链接
- -E:预处理(.i)
- -S:预处理+编译(.s)
- -c:预处理+编译+汇编(.o)
- -g:预处理+编译+汇编+链接+调试信息(.o)
- -o [file1] [file2]:将file2编译成可执行文件file1(.o)
最新文章
- struts2案例
- TYVJ1460 旅行
- 如何处理ABBYY中出现错误代码142和55的问题
- Masonry 固定宽度 等间距
- JSON和JAVA的POJO的相互转换【转载】
- [Head First Python]3. 文件与异常:处理错误
- hdu 5755 Gambler Bo 高斯消元
- cmake的命令execute_process
- POSTMAN-REST Client
- 我的Python学习笔记(一):==和is
- sed&;awk第二版读书笔记
- Access提示Insert Into 语法错误解决办法总结
- Spring Boot最核心的27个注解,你了解多少?
- epoch、 iteration和batchsize区别
- .net updatePannel 局部刷新效果实现后,但是仍是全部刷新的修改方法
- .NET内存管理、垃圾回收
- MySQL案例08:MySQL Scheduler Events带来的风险
- cogs 421 [SDOI2009]HH的项链
- xtraTabbedMdiManager的标题上右鍵弹出关闭窗体菜单
- SVG中嵌入HTML元素