汇编和C语言结构

C语言结构

C语言编译链接过程

  1. 预处理: 删除注释, 将宏定义展开, 执行条件编译指令只保留 满足条件的部分, 将整个头文件插入到include位置
  2. 编译: 将预处理后的文件编译成汇编代码
  3. 汇编
  4. 链接

x86汇编代码结构

  • 伪指令
  • 标号
  • 指令

.开头的是伪指令, 为变量分配内存, 指定变量的值, 也可以协助汇编器做汇编工作, .set定义一个立即数

标号, 一个变量+:, 代表一个地址, 例如aa处就是255, 在写汇编过程中可以使用该标号, 汇编编译器在编译过程中会将标号替换为地址

指令, 每一个指令对应一个机器指令, 如果不做链接操作, 得到的文件就是xxx.o, 包含二进制指令和数据, 以.开头的伪指令没有机器指令

链接

将多个初始的目标文件, 合并到一个可执行文件, 将代码段代码段整合, 数据段数据段整合

程序加载执行

OS会将可执行文件加载到内存, 解析可执行文件的内容, 将每个段的信息加载到内存中进程所对应的虚拟地址空间 , 跳转到一个入口地址去执行

相关推荐
青山是哪个青山8 小时前
LangChain 学习笔记(四):Message 与提示词模板
笔记·学习·langchain
WWJA王文举10 小时前
I²C通信完整流程详解:START、地址、ACK、数据、Repeated START和STOP一次讲透
c语言·开发语言
Shell运维手记11 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
qq_4480111612 小时前
C语言中的动态内存分配
c语言·开发语言·php
FakeOccupational12 小时前
【电路笔记 STM32】Cortex-M7 内核上的数据缓存(D-Cache)结构+MPU+DMA&Cache+STM32CubeMX配置
笔记·stm32·缓存
动词ing12 小时前
【学习笔记】C语言(数组指针与指针数组+字符数组+函数+参数传递+字符串作为形参+递归函数+指针函数+回调函数+结构体嵌套+内存动态分配函数)
c语言·笔记·学习
小雨笙笙14 小时前
C语言:变量三属性——存储类型
c语言·开发语言
z落落14 小时前
C# Modbus-ASCII 超详细完整笔记(协议原理+LRC算法+读写源码全拆解)
笔记
Navigator_Z15 小时前
LeetCode //C - 1192. Critical Connections in a Network
c语言·算法·leetcode
布莱克60515 小时前
理解 C/C++ 中的 void* 指针
c语言·c++