侵权投诉

学习开发环境和编程语言:汇编语言和C语言的比较

2018-04-10 09:01 次阅读

今天来学习开发环境和编程语言。

CPU懂的机器语言

单片机的CPU从存储器读取程序,但是一次只能读取一条指令,然后解释每条指令,并执行。存储器中保存的内容,不管是程序还是数据,都是二进制代码“0”和“1”组成的字符串。指令二进制代码告诉CPU要做什么,而数据二进制代码则是CPU操作或处理指令时要使用的值。CPU的操作包含加、减运算等指令。这些像密码一样排列的“0”和“1”字符串就是机器语言。比如图1左边显示的就是一个机器语言指令,意思是“将2放入寄存器A(寄存器是CPU内部的储存区域)。

CPU总是按存储器地址的顺序读取指令代码,除非遇到跳跃指令。例如,如果复位后的地址是0000,则从0000开始按0001、0002、0003的顺序读取并执行指令。也可以说,一个程序就是按处理要求排列一系列的机器语言。

CPU只能理解如上所述的机器语言。因此,为了使CPU运行,就必须使用机器语言的程序。但是,机器语言不易为人们识别和读写。因此,人们用了更简单易懂的字符串来代替机器语言,这就是汇编语言。例如,在“给寄存器A赋值2”这样的处理时,如果用汇编语言来表示,就很简单,请看图1的右边部分。汇编语言中,用MOV字符串表示赋值,所以“给寄存器A赋值2”的处理就可用“MOV A,#02”表示。

图1:机器语言和 汇编语言的比较

虽然汇编语言比机器语言更加简单易懂了,但是人们读起来还是挺难理解的。而且,汇编语言还存在另一个问题,就是不同的CPU,机器语言的描述方式也不同。因此,如果更换了CPU,就必须改写与机器语言有着密不可分关系的汇编语言,工作量比较大。(以上例子中的机器语言和汇编语言均为瑞萨的RL78族单片机中的语言。)

如上所述,每更换一次CPU都必须对程序进行改编,不但造成生产性低下,还加重了编程人员的负担。

人性化的C语言

能够解决上述问题的编程语言就是C语言。C语言具有不依存于特定的CPU,又具有程序移植性高等的特点。另外,由于编程时可使用人们熟悉的英文单词,所以对编程人员来说C语言是最容易使用的编程语言。下面我们将C语言和汇编语言做一个简单地比较。

图2: 汇编语言和C语言的比较

虽然C语言不依存于CPU而且还是人们最容易使用的编程语言,但对于CPU来说,C语言却是一种完全无法理解的语言。因此,就需要一种可以将C语言翻译为机器语言的软件,这就是被称为编译器 (编译程序) 的软件。 经过编译器翻译的程序的文件格式被称为目标文件格式。如果目标文件格式最终没有被配置到存储器中,CPU就无法执行该程序。

另外,近来由于程序越来越趋于复杂化,所以几乎都采取了将一个程序分割为多个C语言程序文件的结构。所以,还需要一个工具将多个目标文件格式汇总成一个机器语言并配置到存储器上,能够担当起此重任的就是连接编辑程序(linkage editor,也被称为“linker(链接器)”)。

原文标题:为什么原来每换一个CPU就必须改写程序,但现在不用了?

文章出处:【微信号:weixin21ic,微信公众号:21ic电子网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

如何给C语言增加几个位操作函数

在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了...
发表于 07-14 18:15 94次 阅读
如何给C语言增加几个位操作函数

C语言的几种位操作运算

在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了...
发表于 07-14 18:14 84次 阅读
C语言的几种位操作运算

FPGA预计是数据中心加速器市场中年均增长率最高的细分市场

数据中心市场的加速芯片主要包括CPU、GPU、FPGA和ASIC等。据Semico Research....
发表于 07-14 17:19 42次 阅读
FPGA预计是数据中心加速器市场中年均增长率最高的细分市场

嵌入式软件开发ARM中断实验的报告资料说明

一、实验目的(1)、学会使用 Embest IDE 编写简单的 C语言程序并进行调试;(2)、了解不....
发表于 07-14 16:42 9次 阅读
嵌入式软件开发ARM中断实验的报告资料说明

电容多种类的原因是什么,常见的有哪些

们都知道电容是电路中使用量最多的器件,我们经常接触的电容是陶瓷电容、铝电解电容、钽电解电容。
发表于 07-14 14:28 56次 阅读
电容多种类的原因是什么,常见的有哪些

单片机C语言延时程序的注意事项

标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语....
发表于 07-14 11:13 17次 阅读
单片机C语言延时程序的注意事项

单片机C语言代码编写技巧

下面发一些我在网上看到的单片机C语言代码编写技巧和自己的一些经验来和大家分享;
发表于 07-14 11:02 34次 阅读
单片机C语言代码编写技巧

CPU定时器1中断为什么要加EDIS?

本人刚接触dsp 正在自学,希望高手们能指导下 在例程中CPU定时器1中断为什么要加EDIS  而CPU定时器2中断中...
发表于 07-14 09:20 10次 阅读
CPU定时器1中断为什么要加EDIS?

迪文科技的T5L ASIC应用开发指南

T5L系列ASIC是迪文科技针对AIoT应用设计的低功耗、高性价比、CUI和应用高度整合的单芯片双核....
发表于 07-14 08:00 3次 阅读
迪文科技的T5L ASIC应用开发指南

C语言的进阶学习课件资料合集

本文档的主要内容详细介绍的是C语言的进阶学习课件资料合集包括了:第1节-数据的存储,第2节-指针的进....
发表于 07-14 08:00 16次 阅读
C语言的进阶学习课件资料合集

CPU有哪些接口

LGA2011,又称SocketR,是英特尔(Intel)SandyBridge-EX微架构CPU所....
发表于 07-13 17:42 45次 阅读
CPU有哪些接口

5G芯片之争:国内厂商崭露头角,提前打响价格战

5G之争中,芯片厂商的竞争也比以往更激烈。今年1月,高通骁龙765芯片降价,宣布了5G芯片价格战提前....
的头像 我快闭嘴 发表于 07-13 17:08 529次 阅读
5G芯片之争:国内厂商崭露头角,提前打响价格战

与传统计算机相比,工控机有哪些特点?

工控机,是“工业控制计算机”的简称,是由大规模集成电路组成的微型计算机,是专门为工业现场而设计的计算....
发表于 07-13 16:04 78次 阅读
与传统计算机相比,工控机有哪些特点?

公交车载式工控机

车载式工控机主要是由多网口的工业主板,配上CPU以及内存、硬件以及机器外壳组上,由于是多网口式的,所....
发表于 07-13 15:14 109次 阅读
公交车载式工控机

CPU结构与指令集的详细资料说明

本文档的主要内容详细介绍的是CPU结构与指令集的详细资料说明包括了:1 CPU结构 ,2 存储器....
发表于 07-13 08:00 30次 阅读
CPU结构与指令集的详细资料说明

Keil uVision4的使用详解教程概述

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为 CPU 可以执行的机器码有....
发表于 07-13 08:00 17次 阅读
Keil uVision4的使用详解教程概述

分享 郭天祥 十天学会C语言和51单片机视频教程+代码

郭天祥 郭天祥 十天学会C语言和51单片机 详细教程源码 回复可得 链接:https://pan.baidu.com/s/1uWWpG-o_EVscRZ3ys...
发表于 07-12 21:31 94次 阅读
分享 郭天祥 十天学会C语言和51单片机视频教程+代码

13款电脑电源的测试对比

电脑中哪个硬件的优劣差距最大呢?如果你选了CPU或者显卡,那你就图样了。好的电源能用十年之多,升级平....
发表于 07-12 10:47 156次 阅读
13款电脑电源的测试对比

如何把C++的源程序改写成C语言

由于C++解释器比C语言解释器占用的存储空间要大500k左右。为了节省有限的存储空间,降低成本,同时也为了提高效率,将用C+...
发表于 07-11 09:34 820次 阅读
如何把C++的源程序改写成C语言

高通骁龙865 Plus可能即将发布

此前曾有一些困惑是否来自中国的报告后发起声称它的Snapdragon 865加会发生的事情不会抵达,....
的头像 倩倩 发表于 07-10 16:15 763次 阅读
高通骁龙865 Plus可能即将发布

如何实现远程FPGA的更新和重启

如今, 大多数通讯系统均将FPGA作为其产品解决方案, 且已有大量FPGA应用到通讯系统之中。为了达....
发表于 07-10 16:01 136次 阅读
如何实现远程FPGA的更新和重启

关于ARM的三种中断调试方法介绍

在整个流程中,用户首先需要建立工程并对工程做初步的配置,包括配置处理器和配置调试设备。编辑工程文件,....
发表于 07-10 16:01 51次 阅读
关于ARM的三种中断调试方法介绍

科拉德推出一系列可用于车载公交的防震动工控机

科拉德推出一系列具备防震动工控机用于车载公交、地铁等交通工具上。工控机结合新系统,可为公交提供多种服....
发表于 07-10 15:58 39次 阅读
科拉德推出一系列可用于车载公交的防震动工控机

详解工控机的CPU被烧毁的原因

工控机的电压是稳定的范围之内,比如我们的工控机IPC-606,经过电源适配器后转出的电脑为12V输入....
发表于 07-10 15:17 74次 阅读
详解工控机的CPU被烧毁的原因

在Linux系统下使用top命令查看CPU使用情况

在Linux系统下,使用top命令查看CPU使用情况。
发表于 07-10 11:46 37次 阅读
在Linux系统下使用top命令查看CPU使用情况

设计FPGA系统的三个基本原则是什么,了解一下

在这种方法中面积的复制可以换取速度的提高。支持的速度越高,就意味着可以实现更高的产品性能。一些注重产....
发表于 07-10 09:51 73次 阅读
设计FPGA系统的三个基本原则是什么,了解一下

使用C语言写出的九九乘法表

本文档的主要内容详细介绍的是使用C语言写出的九九乘法表资料合集免费下载。
发表于 07-10 08:00 26次 阅读
使用C语言写出的九九乘法表

FPGA是什么?FPGA与单片机有什么区别

二者最大的区别:单片机(无论哈佛总线结构或者冯诺依曼结构)均为取出指令-》执行,指令是顺序执行的(即....
发表于 07-09 18:17 167次 阅读
FPGA是什么?FPGA与单片机有什么区别

单片机、ARM、DSP与CPU它们之间的区别是什么

你知道吗其实单片机、ARM、DSP都是属于CPU吗?它们之间到底有什么区别呢?就这个问题下面就让成都....
发表于 07-09 15:25 93次 阅读
单片机、ARM、DSP与CPU它们之间的区别是什么

苹果公司宣布将为未来的笔记本电脑制造自己的ARM架构处理器

据悉,苹果公司过去曾经给开发者提供了专用的迷你台式机(只有主机)Mac Mini,这款电脑的图形功能....
的头像 我快闭嘴 发表于 07-09 13:16 518次 阅读
苹果公司宣布将为未来的笔记本电脑制造自己的ARM架构处理器

C语言之结构体的声明与定义

我们刚刚申请了一个名叫Info的结构体类型,那么理论上我们可以像声明其他变量的操作一样,去声明我们的....
的头像 玩转单片机 发表于 07-09 09:06 171次 阅读
C语言之结构体的声明与定义

如何把C++的源程序改写成C语言

由于C++解释器比C语言解释器占用的存储空间要大500k左右。为了节省有限的存储空间,降低成本,同时也为了提高效率,将用C+...
发表于 07-08 20:51 284次 阅读
如何把C++的源程序改写成C语言

这个题的完整汇编语言是什么?

应该就是差开头的部分吧
发表于 07-08 18:35 122次 阅读
这个题的完整汇编语言是什么?

CLA有独立的汇编语言,不支持C语言怎么回事

我用的是28035,CCS5.4.0版本的,不懂这句话真的假的。真的话,这个汇编语言怎么学...
发表于 07-08 16:03 34次 阅读
CLA有独立的汇编语言,不支持C语言怎么回事

ARM Cortex-M3 内核的不同功能模块

Cortex-M3内核,内部的数据路径为32位,寄存器为32位,存储器接口也是32位。Cortex-....
发表于 07-08 15:18 42次 阅读
ARM Cortex-M3 内核的不同功能模块

关于ARM流水线的资料和分析

流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法。目的是....
发表于 07-08 14:41 38次 阅读
关于ARM流水线的资料和分析

基于ARM+ DSP色选机控制系统的详细资料

  光电色选机是用于散体物料品质检测和分级的一种有效的分选设备, 在研究光电色选机组成及工作原理的基....
发表于 07-08 14:11 24次 阅读
基于ARM+ DSP色选机控制系统的详细资料

FPGA的用处比我们平时想象的用处更广泛

FPGA的用处比我们平时想象的用处更广泛,原因在于其中集成的模块种类更多,而不仅仅是原来的简单逻辑单....
的头像 EDA365 发表于 07-08 11:33 221次 阅读
FPGA的用处比我们平时想象的用处更广泛

单片机C语言程序设计的详细资料

C语言目前己成为电子工程师进行单片机系统开发时的常用编程语言。用C语言来编写目标系统软件,会大大缩短....
发表于 07-07 14:48 66次 阅读
单片机C语言程序设计的详细资料

组装电脑时,注意这些配置的电脑不要买!

如今电脑已经走进千家万户了,很多人都喜欢选择【组装电脑】,选择组装电脑并不是一味地“跟风”,而是组装....
的头像 如意 发表于 07-07 11:54 449次 阅读
组装电脑时,注意这些配置的电脑不要买!

详谈挖矿木马的检测和解决方案

挖矿木马一般通过查看当前CPU运行情况就能确认,windows下任务管理器中就能看到,linux下使....
的头像 如意 发表于 07-07 11:12 230次 阅读
详谈挖矿木马的检测和解决方案

到底是多核好还是高主频好

了解处理器特性的朋友都知道,在TDP保持不变的情况下,一颗处理器的核心数量越多,那么主频和加速频率就....
的头像 Wildesbeast 发表于 07-04 10:18 752次 阅读
到底是多核好还是高主频好

浅谈2020年六大主流编程语言

目前,计算机语言的总数总计达9000种。但是,其中只有50种编程语言是较为流行的。今天,小编就给大家....
的头像 如意 发表于 07-03 11:36 386次 阅读
浅谈2020年六大主流编程语言

智能手机需要了解的参数和选购指南

手机对于每个人来说早已成为了生活中重要的一部分,因此在购买的时候更要仔细考究,选择一部称心如意的手机....
的头像 如意 发表于 07-03 11:04 447次 阅读
智能手机需要了解的参数和选购指南

苹果计划在明年推出其带有自研处理器的Mac电脑

回看现在的个人PC市场,Intel是绝对的大赢家,这帮助他们在过去相当长的一段时间里攫取了巨额的利润....
的头像 我快闭嘴 发表于 07-03 10:49 738次 阅读
苹果计划在明年推出其带有自研处理器的Mac电脑

单片机教程之C语言的程序设计说明

C51是在标准C的基础上,根据单片机存储器硬件结构及内部资源,扩展了相应的数据类型和变量,而C51在....
发表于 07-02 17:45 59次 阅读
单片机教程之C语言的程序设计说明

c语言宏定义的使用方法

当宏作为常量使用时,C程序员习惯在名字中只使用大写字母。但是并没有如何将用于其他目的的宏大写的统一做....
发表于 07-02 15:04 104次 阅读
c语言宏定义的使用方法

C语言二级指针的用法与原理

提到指针,我们都知道指针是用来存储一个变量的地址。所以,当我们定义了一个指向指针的指针的时候(poi....
发表于 07-02 14:52 113次 阅读
C语言二级指针的用法与原理

数据中心如何使用液冷技术降温

随着芯片功能、应用程序、人工智能、机器学习的技术进步,以及运营商对数据中心工程师和设施管理人员的要求....
发表于 07-02 08:00 52次 阅读
数据中心如何使用液冷技术降温

HW资料华-为硬件(硬件开发C语言PCB设计天线通信)

链接:https://pan.baidu.com/s/1HFxkb4O1jAZvCEccWVcd4w 提取码:stns 回复可见提取码,资源需求可加q1051514663 ...
发表于 07-01 18:20 95次 阅读
HW资料华-为硬件(硬件开发C语言PCB设计天线通信)

基于MstarMSB9100B的Smart-CoreTYPE-C转HDMI解决方案

  一、方案概述:   Smart-CoreTYPE-C转HDMI解决方案采用MstarMSB9100B,内置CPU,flash功能全面,集成...
发表于 07-01 17:09 184次 阅读
基于MstarMSB9100B的Smart-CoreTYPE-C转HDMI解决方案

C语言和PHP,新手选择哪个比较好?

计科专业从事嵌入式开发多年,从现在的市场行情以及就业的机会上讲php的就业空间还是大于C语言,但并不....
的头像 如意 发表于 07-01 16:15 157次 阅读
C语言和PHP,新手选择哪个比较好?

低压智能环网柜成套设备解决方案

(2)、根据电气控制柜总体尺寸及结构型式、安装尺寸,设计箱内安装支架,并标出安装孔、安装螺栓及接地螺....
的头像 智能电网开关柜 发表于 07-01 15:57 369次 阅读
低压智能环网柜成套设备解决方案

飞腾斩获IC设计成就两项大奖 年营收有望突破10亿

在全球化产业分工中,中国多年处于产业链的下游,长期缺乏科技创新和产业升级的内在动力。芯片、操作系统等....
的头像 西西 发表于 07-01 11:35 500次 阅读
飞腾斩获IC设计成就两项大奖  年营收有望突破10亿

Python的发展趋势,未来可期

首先,当前Python作为一门流行程度比较高的全场景编程语言,在IT互联网行业和一部分传统行业已经有....
的头像 如意 发表于 07-01 10:19 282次 阅读
Python的发展趋势,未来可期

怎么样才能在Keil C51环境下实现64位浮点库的设计

为解决Keil C51环境下无法进行64位双精度计算的问题,采用分部存储和分部计算的方法,设计了在K....
发表于 07-01 08:00 22次 阅读
怎么样才能在Keil C51环境下实现64位浮点库的设计

怎么样才能使用Keil C51开发大型嵌入式程序

 结合在8051系列单片机平台上的实际开发应用的经验,介绍用 Keil C在8051单片机上进行大型....
发表于 07-01 08:00 22次 阅读
怎么样才能使用Keil C51开发大型嵌入式程序

详谈选择排序算法的定义和过程

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数....
的头像 如意 发表于 06-30 17:06 112次 阅读
详谈选择排序算法的定义和过程

线程如何与CPU工作,为什么对系统性能至关重要

您对计算机了解一两件事。您几乎可以加快CPU的工作及其性能。而且您知道更多的线程意味着更好的性能。但....
的头像 牵手一起梦 发表于 06-30 14:52 354次 阅读
线程如何与CPU工作,为什么对系统性能至关重要

TMS320VC5501 定点数字信号处理器

TMS320VC5501(5501)定点数字信号处理器(DSP)基于TMS320C55x™DSP生成CPU处理器内核。 C55x™DSP架构通过增加并行性和全面关注降低功耗来实现高性能和低功耗。 CPU支持内部总线结构,该结构由一个程序总线,三个数据读总线,两个数据写总线以及专用于外设和DMA活动的附加总线组成。这些总线能够在一个周期内执行最多三次数据读取和两次数据写入。并行,DMA控制器可以独立于CPU活动执行数据传输。 C55x™CPU提供两个乘法累加(MAC)单元,每个单元能够进行17位×17位乘法运算。单循环。额外的16位ALU支持中央40位算术/逻辑单元(ALU)。 ALU的使用受指令集控制,提供优化并行活动和功耗的能力。这些资源在C55x CPU的地址单元(AU)和数据单元(DU)中进行管理。 C55x DSP代支持可变字节宽度指令集,以提高代码密度。指令单元(IU)从内部或外部存储器执行32位程序提取,并为程序单元(PU)排队指令。程序单元解码指令,将任务指向AU和DU资源,并管理完全受保护的管道。预测分支功能可避免执行条件指令时的管道刷新。 5501外设...
发表于 10-09 14:55 233次 阅读
TMS320VC5501 定点数字信号处理器