如何编写具有以下要求的非常简单的指令集?

时间:2019-03-19 16:02:00

标签: cpu-architecture instruction-set

我对编码非常陌生。 我试图了解如何编写指令集,这非常简单。 要求是这些基础知识:读,写,加,减,启用循环/条件操作。 我试图在网上查找示例代码,但没有成功。 编程语言是否必须是机器代码或可以是c?

1 个答案:

答案 0 :(得分:2)

一种ISA 一种编程语言。程序是机器代码。

ISA是一组规则,用于确定在运行每条可能的指令时计算机的体系结构状态到底发生了什么。例如二进制0101 xxyy可能是2操作数add x,y指令,其中xx是2位目标寄存器号,而yy是源寄存器号。如果您有标志/条件代码寄存器,则ISA会包含有关如何设置标志的规则。

您不会用其他编程语言编写ISA。

您可以设计用于实现ISA的CPU硬件(例如,我认为是Verilog或VHDL)。您甚至可以运行针对您的新ISA运行用机器代码编写的程序的模拟设计。

您还可以为该ISA编写一个解释仿真器,例如在C语言中,它使用C变量和用于存储的数组对计算机的体系结构状态进行建模。该程序将读取机器代码并解码指令。通常,您首先要设计ISA,然后为其实现一个仿真器。


另一个有用的工具是汇编程序,它将文本转换为ISA的机器代码。用于指令的文本助记符和文本寄存器名称仅存在于asm源中。

通常,ISA也将对此进行标准化,因此可以谈论机器代码,但是作为ISA的一部分,完全没有必要使用汇编语言。您可以将其留给ISA用户来为ISA组成寄存器名称和助记符以及asm源语法。