操作系统

  • 每个进程拥有一片连续的内存空间(地址空间),空间中的每个字节都可以用一个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)

最新文章

  1. struts2案例
  2. TYVJ1460 旅行
  3. 如何处理ABBYY中出现错误代码142和55的问题
  4. Masonry 固定宽度 等间距
  5. JSON和JAVA的POJO的相互转换【转载】
  6. [Head First Python]3. 文件与异常:处理错误
  7. hdu 5755 Gambler Bo 高斯消元
  8. cmake的命令execute_process
  9. POSTMAN-REST Client
  10. 我的Python学习笔记(一):==和is
  11. sed&amp;awk第二版读书笔记
  12. Access提示Insert Into 语法错误解决办法总结
  13. Spring Boot最核心的27个注解,你了解多少?
  14. epoch、 iteration和batchsize区别
  15. .net updatePannel 局部刷新效果实现后,但是仍是全部刷新的修改方法
  16. .NET内存管理、垃圾回收
  17. MySQL案例08:MySQL Scheduler Events带来的风险
  18. cogs 421 [SDOI2009]HH的项链
  19. xtraTabbedMdiManager的标题上右鍵弹出关闭窗体菜单
  20. SVG中嵌入HTML元素

热门文章

  1. Python代码简化
  2. 认识Python解释器和PyCharm编辑器
  3. Spring Cloud Gateway 扩展支持动态限流
  4. 这可能是最容易理解的 Go Mutex 源码剖析
  5. Vue Hello World
  6. Kubernetes查看可用的apiVersion版本
  7. Webpack的理解以及解决了的问题
  8. Socket简介 与 UDP
  9. 一次ssh不能登陆问题
  10. zabbix容器化安装及监控docker应用