我正在爲一個簡單的計算器編寫MIPS代碼,並想知道如何根據用戶輸入分支到相應的函數。例如,如果用戶希望添加兩個數字,您如何確保計算器跳轉到添加標籤,而不是可能的乘法或減法?分支到標籤
分支到標籤
回答
將用戶輸入註冊到註冊表中。
然後使用beq指令將它與第一個ascii值比較,比如說'+'。
.data
plus: .asciiz "+"
sub: .asciiz "-"
prod: .asciiz "*"
div .asciiz "/"
.text
.global calculator
.align 2
.ent calculator
calculator:
//t0 holds user input
la $t1,plus
lb $t1,0($t1)
beq $t0,$t1,add
//now check for subtraction, division product. Same code, just change the address (add)
//if none matched, jump to error
b error
add:
//addition code goes here
division:
//division code goes here
product:
//product code goes here
subtraction:
//subtraction code goes here.
error:
//error code goes here.
據我所見,這種方法只能用於3種不同類型的輸入,而不是4種。所以我怎樣才能確保它如果有第四個值需要比較,則分支到另一個標籤? 假設用戶輸入'+'(ascii 43),並將其與ascii 45( - )進行比較,如果小於,則可以使用分支,但'*'的ascii也小於45,那麼我該如何確定它會轉到'+'標籤而不是'*'。 – Taylor 2009-11-28 18:49:10
不要把它想成大於/小於。把它看成更像一個switch語句。 – Tom 2009-11-28 18:55:01
我已經編碼了一個這樣的例子。如果有必要,會發布它,但試着理解這一點。 – Tom 2009-11-28 20:10:37
- 1. 從標籤分支
- 2. 從clearcase標籤合併到git分支
- 3. Git標籤與分支
- 4. SVN標籤/分支更新
- 5. 如何使分支來自/ team標籤中的分支Repo Directory
- 6. 我用groovy中的標籤拉分支
- 7. 標籤vs git中的分支
- 8. 標籤名稱的CVS分支名稱
- 9. TFS:分支,標籤還是擱置?
- 10. 將分支移至新標籤
- 11. 將git分支轉換爲git標籤
- 12. git:有沒有像每分支標籤?
- 13. 如何合併分支上的標籤?
- 14. 從標籤欄控制器分支?
- 15. mercurial:分支與標籤衝突
- 16. Git標籤和分支版本是?
- 17. PHP SVN - 分支/標籤功能
- 18. 如何切換到hg中的標籤/分支?
- 19. 從交換機到分支/標籤歷史
- 20. Mercurial中的標籤如何自動傳播到所有分支?
- 21. 將標籤複製到SVN中的分支
- 22. 如何找到標籤的源代碼分支
- 23. 移動軀幹/標籤/分支到子文件夾
- 24. 如何確定我在git中籤出的分支/標籤?
- 25. 根據CVS中的分支名稱查找前分支標籤 - 有可能嗎?
- 26. 如何將分支更新爲Mercurial中不同分支上的標籤狀態?
- 27. Perforce標籤:Perforce是否允許不同分支中的標籤差異
- 28. Mercurial,「與書籤分支」
- 29. 使用libgit2簽出分支
- 30. Mercurial分支和書籤
請發佈一些信息。你有什麼,你需要什麼。你已經有一些你可以告訴我們的代碼了嗎? – EricSchaefer 2009-11-28 17:47:55
我有代碼,當用戶輸入要執行的函數(+ - * /)時,它將其作爲ascii值存儲在其中一個臨時寄存器中。我的問題是,如何確保用戶輸入的功能跳轉到執行該功能的正確標籤。 例如,如果用戶想要添加數字,則跳轉到添加而不是減去(如下所示)。 addnum: add.s $ F12,F1 $,$ F0#加在一起數量和投放系統調用結果寄存器 Ĵ結果 subnum: sub.s $ F12,F1 $,$ F0 Ĵ結果 – Taylor 2009-11-28 17:55:34
我滾回到'[作業]'的添加 - 在這種情況下,您需要首先詢問它。請參閱http://meta.stackexchange.com/questions/10811/homework-on-stackoverflow – 2009-11-28 18:15:06