📜  在计算机中表示指令

📅  最后修改于: 2022-05-13 01:55:52.422000             🧑  作者: Mango

在计算机中表示指令

指令是计算机程序向计算机处理器发出的命令。每条指令都是一个 0 和 1 的序列。它们有助于描述计算机应执行的物理操作。寄存器用于临时存储数据并执行指令所针对的操作。

ARM 字段说明:

1、操作码代表指令的基本操作。
2. R d表示寄存器目的操作数。执行操作得到的结果存储在这里。
3. R n表示第一个寄存器源操作数。
4. Operand2代表第二个源操作数(在数据处理指令的情况下)和偏移量(地址)在数据传输指令的情况下。
5.代表即时,如果

  • I = 0,则第二个源操作数寄存器。
  • I = 1,则第二个源操作数是 12 位立即数(常数)。

6. S代表设定条件码。它与条件分支指令有关。
7.条件代表条件。它与条件分支指令有关。
8. F代表指令格式,如果

  • F = 0,则为数据处理格式
  • F = 1,则为数据传输格式

不同的指令格式:

1.数据处理(DP):包括一般算术运算(例如:加法,减法等)

ConditionFIOpcodeSRnRdOperand2
4 bits2  bits1  bit4  bits1  bit4  bits4  bits12  bits

2.数据传输(DT):包括数据传输操作(例如:加载,存储)

ConditionFOpcodeRnRdOffset2
4  bits2  bits6  bits4  bits4  bits12  bits

ARM 字段的表示:

每条指令长 32 位。在图中,上述信息以表格形式表示。这里,

Reg refers to the Register numbers between 0 and 15.
Constant: 12 bit constant
Address: 12 bit address

下图也表示了 ARM 指令编码。

ARM指令编码:

InstructionFormatConditionFIOpcodeSRnRdOperand
ADDDP140040RegisterRegisterRegister
SUBDP140020RegisterRegisterRegister
ADD WITH IMMEDIATEDP140140RegisterRegisterConstant
LDR(LOAD)DT14124RegisterRegisterAddress
STR(STORE)DT14125RegisterRegisterAddress

每个指令段称为一个字段包含 4 位(对于 DP)和 6 位(对于 DT)的操作码表示指令执行的操作类型。 (例如:DP 情况下的加法、减法等,DT 情况下的加载或存储)。包含 4 位的 R n给出了作为第一个源操作数的寄存器的编号。包含12 位的操作数 2 为指令要执行的操作提供另一个源操作数。包含 4 位的 R d给出了要接收和的寄存器的编号,称为目标寄存器

笔记 :  

  1. 尽管多种格式(DP 和 DT)使硬件复杂化,但通过保持格式相似可以降低复杂性。
  2. 两种格式的前两个字段和后三个字段的大小相同,其中四个具有相同的名称。
  3. DT格式的操作码字段长度(6位)等于DP格式的三个字段长度之和(操作码,S,I:4+1+1位)。
  4. 在图中,数字以十进制数字系统表示,但它们实际上存储为二进制(0 和 1)

将 ARM 指令翻译成机器指令:

示例 1:考虑这条 ARM 指令。

添加 r3,r1,r2

ConditionFIOpcodeSRnRdOperand2
140040132

字段的值在表中表示。数字以二进制形式存储。

示例 2:考虑这条 ARM 指令。

SUB r2,r2,#6

ConditionFIOpcodeSRnRdOperand2
140120226

示例 3:考虑这条 ARM 指令。

LDR r4,[r3,#24]

ConditionFOpcodeRnRdOffset2
141243424

这样,ARM 汇编指令就被翻译成了机器指令。

指令完整性:

如果指令具有以下每个类别,则称该指令集是完整的:

  1. 算术、逻辑和移位指令。
  2. 数据传输指令(即加载和存储)。
  3. 输入/输出指令。
  4. 程序控制指令包括借助标志检查状态条件的指令。