我寫簡單的組裝SMIPS測試要在HDL定義的處理器上運行。大會地址:標籤與絕對地址
比如我有下面的代碼應該產生一個溢出異常:
main:
#Test Overflow Exception
addi $2, $0, 0xffffffff
addi $3, $2, 0x1
我知道,如果處理器是做正確的事情,它應該重定向到它被放置在地址0xdeadbeef
處理程序。我只知道爲跳躍中加入以下代碼上面添加標籤:
overflowHandler:
addiu $5 $0, 1
bne $0, $5, pass
有沒有一種方法,使在正確0xdeadbeef地址overflowHandler代碼開始? 主要從地址0開始?
編輯:(I具有優於在HDL描述的從處理器跳轉地址控制)
由於我必須在從在Bluespec公司處理器設計的描述處理器跳轉地址控制,我可以更改爲整除4並跳到更近的更方便的位置。所以我的問題是:地址從主地址0x0開始計數? 什麼是最佳解決方案? :改變地址跳轉,還是標籤對應它?
由於提前,
是否有操作系統?或者*你正在編寫一個操作系統? –
這取決於裝載機和工具鏈。通常的方法是使用部分並告訴鏈接器將其放在所需的地址。順便說一下,你的測試是錯誤的,因爲無符號操作顯式地執行** not **產生溢出異常。 – Jester
如果這是真正的MIPS代碼,則處理器不能跳轉到地址0xdeadbeef,因爲該地址未在4字節邊界上對齊。使用'0xdeadbeec'或'0xdeadbef0'可以工作。 – markgz