美文网首页
程序和指令, since 2020-11-17

程序和指令, since 2020-11-17

作者: Mc杰夫 | 来源:发表于2020-11-17 21:27 被阅读0次

(2020.11.17 Tues)

指令instruction

计算机做的事其实很简单,我们给CPU发出指令(instruction),CPU会执行基础动作。指令通常由一串二进制的序列构成。CPU会识别并执行这些指令。每款CPU都有一套指令集,如ARM CPU使用的精简指令集。

一条指令能做的事很少,比如计算寄存器中两个数的和,又如把内存中的数据移入寄存器。寄存器(register)是CPU的临时存储空间。在树莓派中,一个简单的要求,比如求和,也需要多条指令。

  1. 把内存1号地址的数据放入寄存器a
  2. 把内存2号地址的数据放入寄存器b
  3. 对寄存器a和寄存器b的数值求和,并放入寄存器a
  4. 把寄存器a的结果放入内存3号地址

除了搬运数据和计算,CPU指令还可以控制计算机内的其他硬件乃至外设。早期程序员必须熟记CPU的指令集,用指令写程序,需要把任务分解成一条条CPU可以直接理解的指令,这样的程序称为机器程序(machine code),机器程序可以用汇编语言(assembly language)编写。加法程序用汇编可以表示如下

MOV AX, [20H]
MOV BX, [10H]
ADD AX, BX
MOV [20H], AX

AX和BX代表了寄存器的两个位置,[20h]和[10H]是内存的两个位置。

C程序和程序编译

考虑到计算机经常重复执行某些特定任务,于是高级语言被发明出来,用一些特殊的语法来抽象某些常见的指令组合。Linux系统的大部分程序,是用C语言这一高级语言写成的。

C语言中包含了很多抽象语法,所以计算机不能直接理解C语言的语法。高级C语言必须首先编译成汇编程序,再转成机器程序运行。编译C程序的指令如下

$gcc demo.c

编译完成,当前目录下会出现一个a.out(默认输出)的二进制可执行文件,运行该文件

$./a.out

这里的a.out就是一个指令式的程序,是经过编译的。用apt-get下载的应用都是被编译好的二进制可执行文件。

如果apt-get没能找到想要的软件,需要从源代码出发,对程序进行编译。一般而言,会有一个名为configure的脚本用于设置,编译的第一步就是运行这个脚本

$./configure

之后运行make命令

$make

make命令会根据工程中的makefile来解析代码文件之间的依赖关系。通常来说一个工程会包含多个C语言程序。由于C语言可以跨文件的调用函数和变量,所以在编译时,代码文件之间相互依赖。make命令会根据依赖关系来编译文件。

最后把编译好的二进制可执行文件放到configure设定的目标路径中

$sudo make install

Reference

1 Vamei,周梓昕著,树莓派开始玩转Linux,中国工信出版集团,电子工业出版社

相关文章

  • 程序和指令, since 2020-11-17

    (2020.11.17 Tues) 指令instruction 计算机做的事其实很简单,我们给CPU发出指令(in...

  • 'for' 和'since'

    含'for' 和'since'的现在完成进行时 用含现在完成进行时的 for 指在过去开始一直到现在的一段时间。I...

  • 16.3.3 条件编译

    条件编译指令 程序示例 指令

  • Linux文本流, since 2020-11-17

    (2020.11.17 Tues) 文本流text stream 在Linux中,文本流是不同程序不同文件之间的数...

  • VAL语言6种监控指令,不知道怎么做工程师

    工业机器人VAL语言的监控指令有六类,分别为位置及姿态定义指令、程序编辑指令、列表指令、存储指令、控制程序执行指令...

  • 子程序

    子程序设计 一、RET和RETF指令 1.RET指令 CPU执行ret指令时进行以下操作:IP = SS:[SP]...

  • 对程序员来说, CPU 是什么

    [toc] 对程序员来说, CPU 是什么 概念 程序由数据和指令组成 内存地址 - 用来表示指令和数据存储位置的...

  • ARM 64 常见汇编指令

    ARM64常用的汇编指令 运算指令 程序跳转指令

  • ARM System Developer's Guide 学习笔

    分支指令(Branch Instructions) 分支指令改变程序执行的流程或用来调用子程序,这种类型的指令允许...

  • shell编程基础

    基础概念: 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务...

网友评论

      本文标题:程序和指令, since 2020-11-17

      本文链接:https://www.haomeiwen.com/subject/oppfiktx.html