首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >任何汇编语言被认为有用所需的最低指令集是什么?

任何汇编语言被认为有用所需的最低指令集是什么?
EN

Stack Overflow用户
提问于 2012-02-24 22:32:14
回答 7查看 18.3K关注 0票数 23

我正在学习汇编编程,所以我决定尝试在软件中实现一个“虚拟微处理器”,它有寄存器、标志和RAM,可以用变量和数组实现。但是,由于我只想模拟--这是任何微处理器中最基本的行为,我想要创建一种汇编语言,它只有必要的指令,只有那些指令,没有这些指令就无法使用。我的意思是,有些汇编语言可以做乘法和交换寄存器值等,但这些操作并不基本,因为您可以使用更简单的指令来实现它们。我不想执行这样的指令。

我可以想象到在任何汇编语言中都必须有几条指令(我相信),比如MOV移动字节,JP将指令指针发送到另一个地址。

你能提出一套最基本和最基本的装配说明吗?谢谢!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-02-24 22:35:11

嗯,这是一个非常广泛的主题。我想您需要熟悉随机存取机。我不是专家,但很难分辨哪些指令应该得到这个非常基本的微处理器的支持。例如,可以通过加法运算来模拟减法和乘法。如果微处理器支持跳转和条件指令,则乘法是可能的,并且可以通过增加负数来减法。

票数 8
EN

Stack Overflow用户

发布于 2012-02-24 23:04:06

令人惊讶的是,存在着一台指令集计算机这样的东西。

票数 9
EN

Stack Overflow用户

发布于 2013-10-30 08:58:00

最少的指令集需要无指令零指令。我不知道它们是否进入了真正的设备,但是(监委会) 已经实现了,并在碳纳米管计算机MAXQ中成功运行。

事实上,x86也可以作为OISC体系结构使用,因为只要一个mov就可以完成的任何事情,因为它是证明是图灵全的。甚至还有一个名为动杂波器的编译器可以将有效的C代码编译成一个程序,其中只有MOV(或者只有XOR、SUB、ADD、XADD、ADC、SBB和/ or、PUSH/POP、1位移位,或者CMPXCHG/XCHG)。请参阅为什么mov图灵完成了?

然而,与其他体系结构相比,一个体系结构应该足够“快速”(或者不需要像OISC这样的太多指令来执行任务)才能被认为是有用的

计算机最基本的指令类型是数据移动、逻辑/算术操作和分支。对于算术运算,只要一个add/subtract就足够了。对于逻辑,我们可以只使用NORNAND计算任何函数,因此只需要一个。要跳转,我们需要一个jump on "<="jump on "<"指令。数据移动可以由add/sub来模拟。这样,我们可以使用2位来编码3个操作码(addnandjump on "<="),并留出一个供将来扩展。但是,由于它没有单独的加载/存储指令,所以它必须直接操作大寄存器文件而不是内存,或者指令必须能够使用内存作为操作数。

如果需要更多的速度,则可以添加更多的逻辑、分支指令和可能的加载/存储,从而将操作码空间增加到3位。指令集可以是:

  1. 加载
  2. 商店
  3. 添加
  4. nor
  5. 跳不到
  6. 在平等上跳跃

左移可以用add来完成,但是右移比较困难,所以您可能还想添加一个右移位来简化一些常见的操作。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9439001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档