我正在寻找一些“模拟”最常用的数学指令(加法、减法、乘法、除法)的示例代码,并将涵盖基于硬件的 cpu 处理器遵循的所有步骤。
我做的第一件事是使用谷歌并得到了这个: https ://bochs.svn.sourceforge.net/svnroot/bochs/trunk/bochs/cpu/
但这不是我想要的。这是一个指令包装器/仿真器,而我想看看 cpu 如何将所有事情都做到位级别...
..
我正在寻找一些“模拟”最常用的数学指令(加法、减法、乘法、除法)的示例代码,并将涵盖基于硬件的 cpu 处理器遵循的所有步骤。
我做的第一件事是使用谷歌并得到了这个: https ://bochs.svn.sourceforge.net/svnroot/bochs/trunk/bochs/cpu/
但这不是我想要的。这是一个指令包装器/仿真器,而我想看看 cpu 如何将所有事情都做到位级别...
..
TTL是了解数字逻辑的好方法。如果您在 Google 上搜索“TTL 算术”之类的内容,您可能会获得很多关于如何创建诸如加法器和乘法器之类的教程的链接。
(当然知道要搜索什么是问题的一半。)
你应该用谷歌搜索二进制补码算法。
这个计算机算术算法模拟器可能会让您感兴趣。
如果你真的想要“模拟”的代码,'(从字面上看)你需要一个布尔代数语法的解析器:
S ::= E;
E ::= (E)
E ::= T AND T
E ::= T OR T
E ::= T NOR T
T ::= NOT T
T ::= IDENTIFIER # Set of named bits
...
Include grammar for STATEMENTs.
简单地说,为上述语法编写一个解析器,以便您可以开始用布尔代数编写代码。
# Half Adder
SUM = A NOR B;
CARRY = A AND B;
编辑:我意识到这个 SO 问题已经定义了一个解决方案。C ++中的布尔表达式(语法)解析器
从这里,您可以在冯诺依曼架构中构建一个算术逻辑单元 (ALU),它应该能够处理上述算术:http ://en.wikibooks.org/wiki/Microprocessor_Design/ALU
有关算术逻辑单元 (ALU)的Wikipedia 文章有许多可能对您有用的链接。其中有关于加法、乘法和除法的文章。