- 博客(8)
- 收藏
- 关注
原创 内存堆栈管理
程序安装在磁盘上的某个路径下的二进制文件,而进程则是一个程序运行的实例:操作系统会从磁盘上加载这个程序到内存,分配相应的资源、初始化相关的环境,然后调度运行。一个进程实例包括汇编指令代码、数据,还包括进程上下文环境、cpu寄存器状态、打开的文件描述符、信号、分配的物理内存等相关资源。在一个进程的地址空间中,地址在整个运行期间不再发生变化,这部分内存称为静态内存。而在程序中使用malloc申请内存、函数调用过程中栈在程序运行期间不断变化,这部分内存称为动态内存。
2023-12-01 21:39:38 85 1
原创 程序的编译、链接、安装和运行
程序的编译过程,其实就是将我们编写好的C源程序翻译成CPU能识别和运行的二进制机器指令的过程。一个可执行文件通常由不同的的段构(section)成:代码段、数据段、BBS段、只读数据段等。每个section有一个section header来描述,包括段名、段的类型、段的起始地址、段的偏移地址和段的大小。一个可执行文件中的每一个section都有一个section header,将这些section headers集中放到一起,就是section header table,也就是节头表。
2023-11-30 21:23:17 188
原创 嵌入式相关
指令集架构(ISA)是计算机体系架构的一部分,指令集是一个很虚的东西,是一个标准规范。芯片工程师在设计CPU时,也要以指令集中规定的指令格式为标准,实现不同的译码电路来支持指令集各种指令的运行。指令集最终实现的就是微架构,就是CPU内部的各种译码和执行电路。编译器厂商在研发编译器工具或IDE时,也要以指令集为标准,将我们编写的C语言高级程序转为指令集中规定的各种机器指令。因为CPU设计者和编译器开发者遵循的是同一个指令集标准,编译器最终编译生成的指令,都是CPU硬件电路支持运行的指令。
2023-11-28 22:06:39 32
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人