jos*_*hlf 7 binary instruction-set instructions twos-complement
我正在设计一个简单的玩具指令集和随附的模拟器,并且正在尝试找出支持哪些指令。在算术方面,我目前有无符号加法、减法、乘法和除法。但是,我似乎无法找到以下问题的明确答案:哪些算术运算符需要签名版本,哪些算术运算符的无符号和补码签名版本等效?
例如,1111 的补码等于 -1。如果你加 1 并假装它是一个无符号数,你会得到 0000,即使将其视为 -1,这也是正确的。然而,这对所有数字都适用吗?那么其他三个运算(减法、乘法、除法)呢?
加法、减法和乘法是相同的,前提是:
分工不同。
许多指令集提供乘法运算,其中输出大于输入,同样,这些对于有符号和无符号是不同的。
此外,如果您用 C 语言编写模拟器,则需要注意该语言的一些错误功能。
对于有符号和无符号 2 补码,加法和减法是相同的,假设您将以大多数 CPU 的正常方式处理上溢/下溢,即仅环绕。乘法和除法是不同的。因此,无论符号如何,您只需要一个加法例程和一个减法例程,但需要单独的有符号和无符号乘法和除法。