2015-09-11 37 views
0

我整理了一個簡單的彙編程序來熟悉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爲了讓我的代碼得到執行,但似乎並非如此。爲什麼是這樣?

+0

我** **猜測它會在'加載代碼0x10000'不管是什麼,和如果你有任何內存引用,如果你的代碼不期望這個地址,它們將不會工作。當然這個代碼沒有內存訪問,所以它是獨立的。 – Jester

+0

0x10000是一個標準還是由qemu實施決定?因爲我認爲這很奇怪,它會忽略我提供的地址。 – JD951

+0

我會刪除它,我認爲,因爲c翻譯成彙編它應該包括在內。 – JD951

回答