• 嵌入式系统设计师之嵌入式程序设计语言


    一、编译器和解释器的基础知识(II)

    1、编译器

            编译阶段要做的工作是用交叉编译或汇编工具处理源代码,产生目标文件。

             一般来说,优秀的嵌入式 C 编译器所生成的代码,其长度和执行 时间仅比用汇编语言编写的代码长5%~20%。

            GNU    C/C++(gcc)  是目前比较常用的一种交叉编译器,它支持非常多的宿主机/目标机组合。宿主机可以是Unix AIX Solaris Windows Linux    等操作系统,  目标机可以是 x86 Power  PC MIPS SPARC Motorola  68K 等各种类型的处理器。

            gcc 识别的文件类型主要包括: C 语言文件、C++ 语言文件、预处理后的C 文件、预处理后的 C++文件、汇编语言文件、目标文件、静态链接库、动态链接库等。以C 程序为例, gcc 的编译过程主要分为4个阶段:

            (1)预处理阶段,即完成宏定义和 include 文件展开等工作;

            (2)根据编译参数进行不同程度的优化,编译成汇编代码;

            (3)用汇编器把上一阶段生成的汇编码进一步生成目标代码;

            (4)用连接器把上一阶段生成的目标代码、其他一些相关的系统目标代码以及系统的库函数连接起来,生成最终的可执行代码。

            

    二、汇编语言

    1、指令语句

            指令语句又称为机器指令语句,将其汇编后能产生相应的机器代码,这些代码能被CPU直接识别并执行相应的操作。例如,表示传数据、相加、相减和与运算的 MOVADD SUB  AND 等,书写指令语句时必须遵循指令的格式要求。        

            指令语句可分为传送指令、算术运算指令、逻辑运算指令、移位指令、转移指令和

    处理器控制指令等。

    2、伪指令语句 

            伪指令语句指示汇编程序在对源程序进行汇编时完成某些工作。例如,给变量分配存储单元地址,给某个符号赋一个值等。伪指令语句与指令语句的区别是:伪指令 语句经汇编后不产生机器代码,而指令语句经汇编后要产生相应的机器代码。另外, 伪指令语句所指示的操作是在源程序被汇编时完成的,而指令语句的操作必须在程序运行时完成。

  • 相关阅读:
    【CPP】Introduction
    浅谈企业信息化安全建设中的三大误区
    【.NET】快速入门
    论文解析[4] UNET 3+: A FULL-SCALE CONNECTED UNET FOR MEDICAL IMAGE SEGMENTATION
    APP自动化之weditor工具
    震惊!我竟然在1080Ti上加载了一个35亿参数的模型(ZeRO, Zero Redundancy Optimizer)
    移动WEB开发之rem布局--less基础
    云计算【第一阶段(27)】DHCP原理与配置以及FTP的介绍
    Elasticsearch,Logstash和Kibana安装部署(ELK Stack)
    真香警告!JitPack 开源库集成平台
  • 原文地址:https://blog.csdn.net/qq_35654286/article/details/136025626