IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 嵌入式系统学习整理-ThreeDay -> 正文阅读

[嵌入式]嵌入式系统学习整理-ThreeDay

前言

一、机器语言是什么?

二、汇编语言是什么?

三、高级语言是什么?

学习链接


前言

????????由前文知,嵌入式开发会接触到硬件,那么控制硬件要用什么语言呢?那么市面上很火的Python、Java、C++同为高级语言,又有什么区分呢?我们初学者要学习什么语言呢?

????????计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。

????????低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。


一、机器语言是什么?

????????机器语言是一种指令集的体系,它是用二进制代码表示的语言,是计算机唯一可以直接识别和执行的语言,它具有计算机可以直接执行、简洁、运算速度快等优点,但它的直观性差,非常容易出错,程序的检查和调试都比较困难,此外对机器的依赖型也很强。

????????由此可见,二进制的阅读难度巨大,难学、难懂、难理解又无通用性。所以,对嵌入式开发而言机器语言并不适合我们初学者学习。

二、汇编语言是什么?

????????汇编语言是面向机器的程序设计语言,它是为了解决机器语言难以理解和记忆的缺点,用易于理解和记忆的名称和符号表示机器指令中的操作码,这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言;于是汇编语言亦称为符号语言。

????????使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。

? ? ? ? 那么它适不适合学习呢?特点如下:

  • 助记符指令和机器指令一一对应。用汇编语言编制的程序效率高,占用存储空间小,运行速度快。汇编语言能编写出最优化的程序,且能反映计算机的实际运行情况。
  • 编程比高级语言困难。因为汇编语言是面向机器的,程序设计人员必须对计算机有相当深入的了解,才能使用汇编语言编制程序。
  • 汇编语言能直接与存储器、接口电路打交道,也能申请中断。因此汇编语言程序能直接管理和控制硬件设备。
  • 缺乏通用性,程序不易移植。不同计算机的汇编语言之间是不能通用的,因为它们各自都有适合于自己机型特点的汇编语言。但是,掌握了一种计算机的汇编语言,有助于学习其他计算机的汇编语言。

三、高级语言是什么?

????????高级语言为用户提供了一种既接近与自然语言,又可以使用数学表达式,还相对独立于机器的工作方式。与汇编语言一样,机器也不能直接执行用高级语言编写的程序。

????????高级语言有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但它编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。

  • 接近于自然语言和数学语言,容易为人们掌握;
  • 独立于机 器,有一定的通用性;
  • 计算机不能直接识别和执行用高级语言编写的程序;
  • 用高级语言编写的程序大大提高了编写效率。

????????显而易见,现在大部分程序员用的都是高级语言,而高级语言又有许多分支,如流行的javacc++C#pascalpythonlispprologFoxPro易语言,中文版的C语言等等,这些语言的语法、命令格式都不相同。那么高级语言怎么分类呢?

  1. 命令式语言。这种语言的语义基础是模拟“数据存储/数据操作”的图灵机可计算模型,十分符合现代计算机体系结构的自然实现方式。其中产生操作的主要途径是依赖语句或命令产生的副作用。现代流行的大多数语言都是这一类型,比如?FortranPascalCobolCC++BasicAdaJavaC#?等,各种脚本语言也被看作是此种类型?。

  2. 函数式语言。这种语言的语义基础是基于数学函数概念的值映射的λ算子可计算模型。这种语言非常适合于进行人工智能等工作的计算。典型的函数式语言如?LispHaskellMLScheme?、F#等???

  3. 逻辑式语言。这种语言的语义基础是基于一组已知规则的形式逻辑系统。这种语言主要用在专家系统的实现中。最著名的逻辑式语言是?Prolog

  4. 面向对象语言。现代语言中的大多数都提供面向对象的支持,但有些语言是直接建立在面向对象基本模型上的,语言的语法形式的语义就是基本对象操作。主要的纯面向对象语言是?Smalltalk

????????那么C语言和Java真的没有不同吗,许多人也听说做软件就要用Java,那么嵌入式需不需要呢?

????????C语言是一门面向过程计算机编程语言,与C++、C#、Java面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%-20%。因此,C语言可以编写系统软件。?[2]?

????????当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。

????????C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。

????????Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

????????对硬件来说,控制硬件涉及到的大概有精准、快速、易移植,这样看起来汇编语言似乎更适合控制硬件,但不是人人都想学会这晦涩的汇编语言,那么,只比汇编语言效率低10%~20%的C语言就成了最优解。

????????那么Java语言呢?不都是命令性语言吗?

????????首先要知道Java是面向对象的语言,执行效率比C语言低。为什么会这样呢,简单来说,Java中的面向对象看起来晦涩难懂,其实他只是为了降低了开发效率而设计了对象这个东西,简单来说,对某一个对象来说,他是变形金刚,你输入参数1为车,输入参数2为擎天柱,这就比C语言方便,C语言为面向过程的语言,这样你就要从变形金刚的组成来写并一点点完善功能,所以部分执行效率差在这里,所以Java多用于Java可以编写桌面应用程序Web应用程序分布式系统嵌入式系统用程序等。注:嵌入式系统应用程序就像安卓软件包那种的奥,是软件开发。

????????虽然Java语言的出现要比C语言晚一些,但是Java语言的发展道路与C语言还是具有明显的区别,或者说Java的开发人员并不是想让Java取代C语言。Java语言的发展道路主要可以体现出三个特点,第一是跨平台;第二是资源整合能力强;第三是并发处理能力强。可以说Java语言在设计上是希望解决C语言之上的问题,也就是网络问题。

????????实际上,与Java语言同时代的Python语言,在设计思想上与Java也有很多共同点,只不过Python语言更注重库的作用,语言风格更开放(胶水语言),而Java语言依托在当时的Sun技术体系下,则显得要相对“严谨一些”,当时的Sun技术体系也想基于Java成就一个新的开发模式,只不过后来的EJB并没有取得设想的结果。而Python作为胶水语言,也是被我们所需要的。


学习链接

C语言学习视频

链接:https://pan.baidu.com/s/1h00QUB-oTJuYENvmRIxjwQ?
提取码:1111?

c 语言程序设计-谭浩强

链接:https://pan.baidu.com/s/12uxfiojyQxl-uey3sWkJcw?
提取码:1111?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 09:30:35  更:2021-08-28 09:30:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 17:37:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计