2012-05-03 61 views
0

寄存器欲寫在SPIM一個小程序,計算圓的圓周長度,並讀取從用戶半徑的值...這裏是代碼乘兩個浮體在SPIM

sw $s0, p2 
l.s $f6 ,p2 
li.s $f2 ,3.4 

mul.s $f8, $f2, $f6 

S0是輸入的形式的用戶 p浮點變量在.data段

執行程序我在寄存器F2,F6這些值,F8後半徑的值(當S0 = 3):

FP2 = 4059999a 
FP6 = 00000003 
FP8 = 0000000a 

是這樣的結果嗎?如果這是真的,爲什麼f8 10中的值不是10.2?

回答

0

0000000a是浮點數的十六進制表示。這並不意味着「10」,這意味着1.4e-44。

問題是,您沒有正確地將$ s0中的整數轉換爲float。考慮$ s0 = 3的情況。你對「sw $ s0,p2」的調用只是簡單地將0x00000003位置入內存位置p2。你對l.s「$ f6,p2」的調用把這些相同的位放在$ f6中。但0x00000003並不意味着「3」作爲浮點數,而是4.2x10-45。