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