我試圖創建一個Verilog的8086處理器,和我有一個更好的高於平均水平的基本認識大部分的架構(可以相處愉快,一旦我得到過去,這點),但我似乎無法圍繞ALU中的Carry和Auxiliary標誌如何工作。進/輔助標誌功能
據我所知,CF是建立在一個加法或減法(在這種情況下,它被稱爲借位),將導致結果爲比ALU的位寬度大觸發。
但是,我怎麼會寫Verilog代碼進行加減,讓我寫這些標誌[0](CF)位,然後再訪問它繼續運作?任何人都可以給我例子,我可以解構?
此外,這更是一個n00b問題,但如果一個帶進位操作的ALU能夠支持創建一個17位數字(如果SI和DI寄存器的寬度只有16位),它是怎麼樣的呢?這個多餘的位置在哪裏呢?如果乘法產生相同的位溢出,會發生什麼?
很多道歉的新手級問題。我幾乎覺得自己會因爲某些明顯的無知或對此缺乏理解而大吼一聲。非常感謝任何能夠幫助並給予理解的代碼行,以便爲我闡明這一點。
噢好吧。所以這種操作的結果將是CF FLAGS位和寄存器結果的組合。這對我來說更有意義 - 我愚蠢地認爲,ALU把它們總結在一起並放在某個地方,哈哈。 – ecfedele
現在,如果處理器被告知無需進位兩個可以設置CF位的值,會發生什麼情況? – ecfedele
如果你需要額外的操作而不觸碰進位位,那麼你可以在那裏添加額外的子句來做不同的事情(比如不向CF寫入數據)。有很多不同的方式可以完成。 – Tim