【问题标题】:How are math instructions implemented on hardware?数学指令是如何在硬件上实现的?
【发布时间】:2012-07-29 21:02:42
【问题描述】:

我正在寻找一些“模拟”最常用数学指令(加法、减法、乘法、除法)的示例代码,并将涵盖基于硬件的 cpu 处理器遵循的所有步骤。

我做的第一件事是使用谷歌并得到了这个: https://bochs.svn.sourceforge.net/svnroot/bochs/trunk/bochs/cpu/

但这不是我想要的。这是一个指令包装器/仿真器,而我想看看 cpu 如何将所有事情都做到位级别...

..

【问题讨论】:

  • 了解 NAND 门以及它们如何用于实现这些基本指令
  • 编译一些示例代码,让编译器输出一个混合的 c/asm 列表文件。然后,检查结果:)
  • 问题是我想看看实际指令在幕后做了什么......

标签: math optimization compiler-construction cpu


【解决方案1】:

TTL 是了解数字逻辑的好方法。如果您在 Google 上搜索“TTL 算术”之类的内容,您可能会获得很多关于如何创建加法器和乘法器等内容的教程链接。

(当然知道要搜索什么是问题的一半。)

【讨论】:

  • 我有一个测试板,我还没有打开包装:o 所以我想先看看一些软件实现
  • 在硬件中做这种事情实际上比在软件中“模拟”要容易得多。
【解决方案2】:

你应该用谷歌搜索补码算法

您可能会对这个Computer Arithmetic Algorithms Simulator 感兴趣。

【讨论】:

    【解决方案3】:

    Wikipedia article on the arithmetic logic unit (ALU) 有许多可能对您有用的链接。其中关于additionmultiplicationdivision的文章。

    【讨论】:

      【解决方案4】:

      如果您真的想要“模拟”的代码,(从字面上看),您需要一个布尔代数语法解析器:

      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 问题已经定义了一个解决方案。 Boolean expression (grammar) parser in c++


      从这里,您可以在冯诺依曼架构中构建一个算术逻辑单元 (ALU),它应该能够处理上述算术:http://en.wikibooks.org/wiki/Microprocessor_Design/ALU

      【讨论】:

        猜你喜欢
        • 2013-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多