在我寫虛擬記憶體時遇到一些問題,jalr t0就是可以的,而call main則沒辦法成功 而且這裡預設main是偏移前的地址,怪哉!!! 讓我們看看jalr 和call(偽指令!!!) 然後在鏈接後看看main的地址,主要看程式中main是不是偏移 懸著的心也死了!!! 查看一下ucore也有類似的 ...
在我寫虛擬記憶體時遇到一些問題,jalr t0就是可以的,而call main則沒辦法成功
而且這裡預設main是偏移前的地址,怪哉!!!
讓我們看看jalr
和call(偽指令!!!)
然後在鏈接後看看main的地址,主要看程式中main是不是偏移
懸著的心也死了!!!
查看一下ucore也有類似的問題,看看他們怎麼解釋
太複雜了!看不懂!
結論
在mmu之前jalr已經將pc值設置為絕對地址(也就是物理main+偏移=虛擬main),而call則不同,它是一條偽指令是在mmu後面執行的,這個就會造成:call到虛擬main+偏移=非法訪問!