我正在考虑一个最小指令集CPU,比如十个或更少的操作码。我想找到仍然可以执行任何通用功能的最小数学运算代码集。
例如,在逻辑中,运算符AND,OR,NOT是冗余的。您可以使用其他两个来计算任何函数,因此最小的逻辑运算符集只需要两个。
对于算术函数,我可以使用两个操作码,可能是ADD和逐位反转吗? (假设进位和进位执行指令)。
使用ADD和BITINV,我可以在没有显式SUB运算符的情况下进行减法。乘法和除法是加法和减法的简单扩展。 SHL乘以2,SHR除以2。
为了覆盖逻辑和算术,它看起来像AND,BITINV,ADD是一个完整的最小集合。我错过了什么吗?
答案 0 :(得分:2)
您可能还需要包含条件和跳转等控制指令,以使指令集图灵完成(或者您的指令集应该能够构造所有computable functions)。
例如,在您的问题中,
乘法和除法是添加和扩展的简单扩展 减法
如果没有循环和条件的概念,这是不正确的(考虑例如用于除法的欧几里德算法)。你必须在某个地方设置循环才能进行划分。