我试图创建一个Verilog的8086处理器,和我有一个更好的高于平均水平的基本认识大部分的架构(可以相处愉快,一旦我得到过去,这点),但我似乎无法围绕ALU中的Carry和Auxiliary标志如何工作。进/辅助标志功能
据我所知,CF是建立在一个加法或减法(在这种情况下,它被称为借位),将导致结果为比ALU的位宽度大触发。
但是,我怎么会写Verilog代码进行加减,让我写这些标志[0](CF)位,然后再访问它继续运作?任何人都可以给我例子,我可以解构?
此外,这更是一个n00b问题,但如果一个带进位操作的ALU能够支持创建一个17位数字(如果SI和DI寄存器的宽度只有16位),它是怎么样的呢?这个多余的位置在哪里呢?如果乘法产生相同的位溢出,会发生什么?
很多道歉的新手级问题。我几乎觉得自己会因为某些明显的无知或对此缺乏理解而大吼一声。非常感谢任何能够帮助并给予理解的代码行,以便为我阐明这一点。
噢好吧。所以这种操作的结果将是CF FLAGS位和寄存器结果的组合。这对我来说更有意义 - 我愚蠢地认为,ALU把它们总结在一起并放在某个地方,哈哈。 – ecfedele
现在,如果处理器被告知无需进位两个可以设置CF位的值,会发生什么情况? – ecfedele
如果你需要额外的操作而不触碰进位位,那么你可以在那里添加额外的子句来做不同的事情(比如不向CF写入数据)。有很多不同的方式可以完成。 – Tim