# ALU 將一些MIPS的指令用硬體給實作出來 * ALU的指令 * add/sub * and/or/nor * slt(set on less than) ![image](https://hackmd.io/_uploads/r11pRwGqT.png) ## 設計ALU * Divide and Conquer * Boolean的運算(and、or、not)可以被分割為對每個 bit 的操作,進而實現整體的運算。 * 在加法中,可以先將加法拆解為一 bit 的加法,處理每個 bit 的相加,然後再將進位整合在一起。 * Design Trick 2: Solve Part of the Problem and Extend (解決部分問題並擴展) * 在設計ALU時,可以先實現基本的邏輯運算(and、or、add、sub),然後再擴展實現額外的操作,如slt(set-on-less-than)和nor(logical NOR)。 * 先得到一部分的功能,再不斷擴展以滿足更多的需求。 ## add/or/and 實現 ![image](https://hackmd.io/_uploads/B1ZnJuG5a.png) 如圖: * and 0000 * or 0001 * add 0010 ## subtract 實現 ![image](https://hackmd.io/_uploads/S1E-7OzqT.png) 如圖: * sub 0110 ## nor 實現 ![image](https://hackmd.io/_uploads/HJeK7dzq6.png) 如圖: * nor 1100 ## Overflow 由於超過了所能表示的位元數範圍而導致的。 一個二進位加法器只能表示一定範圍的數字。 例: ![image](https://hackmd.io/_uploads/Syz-NOG96.png)