2015-12-03 23 views
-1

我在ARM彙編語言飛思卡爾自由KL46Z板在Keil uVision 5環境中編寫代碼。我的代碼非常冗長,但是在代碼的主要部分中,無論何時我嘗試加載(LDR)常量或變量,都會出現此錯誤: 錯誤:A1284E:文字池太遠,使用LTORG將其組裝4KB 我不知道這意味着什麼或如何解決它。出現錯誤的地方都是類似的說明。例如,第一誤差是在該讀取的指令:其中的時間定義爲 LDR R1,=時間時間空間4 該實例是一個變量,但它也發生在定義的常量。任何人都可以幫我弄清楚如何解決這個錯誤?文字池太遙遠了?

+0

你能後到目前爲止你有什麼? – wogsland

+1

當一個錯誤信息顯示在做的事情,你會不會首先查找[那個東西是什麼(http://www.keil.com/support/man/docs/armasm/armasm_dom1361290018422.htm),看它是否解決了這個問題的一些亮點? – Notlikethat

+0

我試圖尋找了LTORG指令,但我看不到在像下面狀態答案代碼可執行戰神它不是。 – programmr

回答

1

錯誤消息或多或少地解釋了您需要執行的操作。將一個LTORG directive插入到4096字節行內的彙編代碼中,以提供錯誤消息。 LTORG語句必須與代碼位於同一節中,且不得位於可能執行的代碼路徑中。它會導致將常量(文字)插入到會導致崩潰或以其他方式執行不當的部分中。

一個好的地方是在函數結束之後(或函數的入口標籤之前)給出錯誤。如果這仍然超過4K,那麼你需要在你的函數中找到一個無條件的分支或返回指令,你可以把它放在後面。如果沒有這樣的指令,那麼你必須插入一條無條件的分支指令,它不會執行任何操作,而是跳過代碼中某處的LTORG語句。