看板 Grad-ProbAsk 關於我們 聯絡資訊
請問 計組 multicycle的地方 ALUSRCB 控制信號 在10跟11時 是要給哪些指令用的? 還有就是...為什麼需要sign extend? shift 2bit 有啥作用呢? 謝謝回答~~~ -- Regardless our friends might say to us or do, Lord Jesus we love you. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.113.182
metalalive:ALUsrcB = 10 ,是給 memory access 指令用的 ex. lw,sw 07/24 00:36
metalalive:因為lw,sw指令 需要 1 register 加上 signExt(16imm) 07/24 00:38
metalalive:打錯 , 是 1 register (代表offset in memory) 加上 07/24 00:43
metalalive:另一個 16 bit 的常數,當作data所在的memory address 07/24 00:45
metalalive:而16 bit常數,需要先轉成 32 bit 才可以跟 register 做 07/24 00:46
metalalive:加法 07/24 00:46
metalalive:ALUsrcB = 11 , 是給 branch 指令使用 07/24 00:55
metalalive:branch 的條件成立後 PC <- PC + signExt(16imm) << 2 07/24 00:56
metalalive:其 16 bit常數extend到32 bit後,之所以要shift left 2 07/24 00:57
metalalive:是因為該程式原本提供的數值是計算jump行數,而非直接 07/24 00:59
metalalive:給relative memory address , 所以要乘以4 (等同 shift 07/24 01:00
metalalive:left 2) 07/24 01:00
da0910cc:33333QQQQQQQQQQQ!!!!!!!!!!!!!!! 07/24 20:38
sneak: left 2) https://daxiv.com 09/11 14:27