2011-06-21 200 views
1

我已經儲存卡的gcc交叉編譯器與「PowerPC的EABI」爲目標的窗戶使用cygwin的。GCC編譯器的問題

當裝配follwing代碼lis r4, %hi(IMMR_OFFSET),我得到以下

錯誤。

init/code/sfiles/init_core.s:141: Error: bad expression 

init/code/sfiles/init_core.s:141: Error: syntax error; found `h', expected `,' 

init/code/sfiles/init_core.s:141: Error: junk at end of line: `hi(IMMR_OFFSET)' 

我想知道爲什麼上面的錯誤出現在類似於上面的每個lis指令中。

請在這個方向上有所幫助。

IMMR_OFFSET的值在另一個.h file如下所定義....

.equ IMMR_OFFSET, 0xF0010000 

我使用組件follwing命令....

c:/cygwin/home/cdot/powerpc/bin/powerpc-eabi-as -mbig-endian -g --defsym _NDI_=1 

--defsym _DBGR_ON_=1 --defsym DEBUG=1 --defsym _PARAM_DEBUG_=1 --defsym _NIU_=1 

-gdwarf-2 -I init/code/hfiles -o init/build/niu_ndi_dbgr_init_core.o init/code/ 
sfiles/init_core.s 2>init/build/niu_ndi_dbgr_init_core.err 
+1

我不能幫你解決,但要注意IMMR_OFFSET沒有任何與你的問題。編譯器抱怨後'LIS R4,%'會想到一個逗號......換句話說,它不明白'%喜(...)'應該在這方面的意思。 –

回答

1

我有一種感覺,您的彙編源期望使用不同的彙編器構建...

某些PPC彙編程序確實支持%hi(foo)語法,但不支持GNU集合(除非有一些記錄不完善的選項,我不知道)。

它還除非您使用-mregnames標誌不會承認r4作爲註冊名。

在GNU彙編程序語法相當於是

lis 4, [email protected] 

(如果你使用-mregnameslis r4, [email protected]也將工作)。

類似地,%lo(foo)%ha(foo)分別需要寫爲[email protected][email protected]