2016-01-06 21 views
0

我想調用一個函數,但由於某些原因,現在允許使用指令 jal。有沒有辦法做到這一點?MIPS彙編語言 - 在不使用'jal'的情況下調用函數

一個想法我是爲了某種方式得到程序計數器的值$ra ,然後只用j function,所以像這樣

    # somehow $ra = address of next instruction 
addi $ra, $ra, 8 # word length is 32 bytes so $ra gets the address of 
        # the next instruction after 'j function' 
j function 
        # continue here after function ends 

function: 
    # do stuff 
    jr $ra 

感謝

回答

4

如果您查找的行爲任何參考文獻中的jal指令,模仿它都是微不足道的。無論如何,您可能知道jal將返回地址存儲在$ra中,這就是爲什麼您可以使用jr $ra從函數返回。因此,您需要做的就是自己存儲該地址,然後您可以使用j。例如:

la $ra, continue 
    j function 
continue: 
    ... 
+2

或者用目標地址加載一個寄存器並使用'jalr'。對教學使用不合理限制的人至少應該是徹底的。 – EOF