1

基本上我進入我的最後一年,一個有趣的建議項目的想法是在C創建一個交叉彙編++爲的ARM Cortex M-想用C寫了ARM Cortex編譯器++

所有信息上的web說明如何在C++中爲arm進行交叉編譯,而不是源代碼在交叉編譯器本身的方式/位置。

我應該尋找什麼具體細節?你有任何提示,以避免主要的旅行?

在此先感謝!

+0

我不完全確定你在問什麼。 GCC的源代碼位於GCC網站上,但我不確定爲什麼編寫交叉彙編程序時需要編譯器的源代碼? – us2012

+0

我基本上在問我應該看看編寫一個手臂交叉編譯器。 – gavlaaaaaaaa

+2

交叉編譯器或交叉彙編器?不是在任何情況下,你打開一個測試文件,解析它並響應這些命令,在你隔離指令和操作數並創建機器代碼的情況下,這很重要。 –

回答

1

假設你只想寫一個ARM彙編在C++中,因爲是cross compiling只想靠裏,你會編譯項目。這裏有一些指針。

首先您需要確定語法。最好是使用現有的,因爲這

  1. 將使您的工作更輕鬆
  2. 提供誰已經被用於該
  3. 可以驗證使用現有的工具,你的項目的用戶。就像你可以使用一個標準的編譯器爲一段代碼片斷生成彙編代碼,然後運行你自己的彙編器來生成一個二進制代碼。

從這些結論,我會使用GNU's syntax,只專注於ARM part並留下其他位。

然後您需要爲該語法編寫解析器。您可以使用解析器生成器,但另一方面,如果可能更容易編寫自己製作的單手,因爲除某些情況外,彙編語法並不複雜。

如果你可以完成一個分析器,那麼你需要能夠採取的所有指令和編碼成寫二進制值。您還需要關注支持的語言結構,例如可以在應用程序中的某處保存字符串或任何數據,並允許指令對該地址執行操作。

至於最後一部分,如果你想製作你需要學習,並能夠產生這種形式使其他系統,如裝載機,操作系統可以使用二進制通過你的彙編製作成功的二進制標準二進制文件。

1

交叉*彙編*的等價會GAS彙編(上主機H)對靶X運行,但組裝代碼目標Y.

GCC是您的彙編程序的實現語言。但由於你的交叉彙編器可能會運行在與GCC++相同的平臺上,它就像任何程序一樣。該程序僅僅會產生外國的asm。