完全自学C(干货) —— 编译与链接

目录

 一,翻译环境

编译器

链接器

二,执行环境

三,参考书籍


在ANSI(美国国家标准学会) C的任何一种实现中,存在两个不同的环境

  • 翻译环境,将源代码转换为可执行的机器指令;
  • 执行环境,用于实际执行代码;

 一,翻译环境

  • 每个源文件,通过编译分别转换成目标文件;
  • 每个目标文件,由链接器捆绑在一起,形成一个单一而完整的可执行程序;
  • 链接器同时也会引入标准C函数库中被该程序用到的库函数,且可搜索程序员个人的程序库,将其需要的函数也链接到程序中;

编译器

  • 编译 = 预编译(预处理) + 编译 + 汇编;  
  • cl.exe,是Microsoft C/C++编译器

预编译/预处理(文本操作)

  • #include,完成了头文件的包含;
  • #define,定义的符号和宏的替换;
  • 条件编译;
  • 删除注释;

编译

  • 把C语言代码,转换为汇编代码;
    • 语法分析;
    • 词法分析;
    • 语义分析;
    • 符号汇总; 

汇编

  • 把汇编代码转换为机器指令(二进制指令);
    • 汇编后生成.obj文件(elf格式);
    • 生成符号表;

链接器

  • 链接,把多个目标文件和链接库链接生成可执行程序(elf格式);
  • link.exe,链接器;

  •  合并段表;
  • 符号表的合并,及重定位;

二,执行环境

程序执行过程

  • 程序必须载入内存中;
    • 操作系统环境中,一般由操作系统完成;
    • 独立环境中,必须手动安排,也可能通过执行代码置入只读内存来完成;
  • 开始执行程序,接着调用main函数;
  • 开始执行程序代码;
    • 此时程序使用一个运行时栈,存储函数的局部变量和返回地址;
    • 程序同时也可使用静态内存,存储静态内存中的变量在程序的整个执行过程中一直保留它们的值;
  • 终止程序,正常终止main函数,或意外终止;

三,参考书籍

《编译原理》

《程序员的自我修养》

《高质量C/C++编程指南》

《C语言深度剖析》

  • 11
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
FPGA自学笔记——设计与验证JMB FPGA(可编程逻辑门阵列)是一种可编程的硬件平台,可以实现各种数字电路的设计与验证。本文将简要介绍使用FPGA自学设计与验证JMB(低功耗、高效能、集成度高的多媒体芯片)的过程。 首先,我们需要了解JMB的功能和特性。JMB是一种面向多媒体应用的芯片,具备低功耗、高效能和高集成度的优势。我们需要详细研究JMB的硬件架构和内部模块,包括处理核、存储模块、图像和音频处理模块等。 接下来,我们可以使用FPGA开发板来设计和验证JMB。首先,我们需要熟悉FPGA设计工具,例如Vivado或Quartus等。这些工具提供了图形化界面和硬件描述语言(HDL)等设计方法。我们可以使用HDL编写JMB的功能模块,并将其综合为FPGA可执行的位流文件。 在设计完成后,我们需要验证JMB的功能和性能。我们可以使用仿真工具(例如ModelSim或ISE Simulator)来模拟JMB在不同情况下的行为。通过设计测试程序并运行仿真,我们可以验证JMB的各个模块是否正确地工作,是否满足设计要求。 在验证完成后,我们可以将位流文件下载到FPGA开发板中进行智能芯片的物理实现和测试。通过与外部设备的连接以及相关测试程序的运行,我们可以验证JMB在实际硬件中的功能和性能。 总结起来,学习FPGA设计与验证JMB,我们需要熟悉JMB的硬件架构和内部模块,并使用FPGA开发工具进行设计与验证。通过仿真和物理实现测试,我们可以验证JMB的功能和性能。这些过程需要理论知识和实践经验的结合,希望这些笔记能够给你提供一些参考和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值