我整理了一個簡單的彙編程序來熟悉QEMU。我一直在關注這兩個教程(opensourceforu.efytimes.com/2011/07/qemu-for-embedded-systems-development-part-2/)(http://www.csd.uwo.ca/~mburrel/stuff/ppc-asm.html)下面是我爲PowerPC編寫的彙編程序,它從第二個教程。我在powerpc彙編程序中做了什麼錯誤?
.global _Start
_Start:
addi 3, 0, 0xa #load 0xA into r3
addi 4, 0, 0xb #load 0xB into r4
addi 5, 0, 0xC#load 0xB into r5
b .
這是基本的,只是將隨機值加載到通用寄存器3-5中。
當我交叉編譯它時,我使用下面的鏈接器腳本。
ENTRY(_Start)
SECTIONS
{
. = 0x10000;
startup : { dummyStartup.o(.text)}
}
我把一切都放在一起使用交叉編譯器,通過競價排名的說明在第一個教程,當我在QEMU運行,註冊3-5的預期值。
我的問題是當我將0x10000更改爲不同的東西,比如0x10500或0x9999時,程序仍然運行得很好。該教程指出,QEMU的內核選項需要一切都在0x10000爲了讓我的代碼得到執行,但似乎並非如此。爲什麼是這樣?
我** **猜測它會在'加載代碼0x10000'不管是什麼,和如果你有任何內存引用,如果你的代碼不期望這個地址,它們將不會工作。當然這個代碼沒有內存訪問,所以它是獨立的。 – Jester
0x10000是一個標準還是由qemu實施決定?因爲我認爲這很奇怪,它會忽略我提供的地址。 – JD951
我會刪除它,我認爲,因爲c翻譯成彙編它應該包括在內。 – JD951