基本上我将进入最后一年,一个有趣的提议项目构想是用C ++为Arm Cortex M创建一个交叉汇编程序 -
Web上的所有信息都说明了如何在C ++中为arm交叉编译,而不是交叉编译器本身的源代码的方式/位置。
我应该搜索哪些具体内容?你有什么建议可以避免重大旅行吗?
提前致谢!
答案 0 :(得分:1)
交叉*汇编程序*的等价性将是GAS编译(在主机H上)以在目标X上运行,但汇编目标Y的代码。
GCC是汇编程序的实现语言。但是,由于你的交叉汇编程序可能与GCC ++在同一平台上运行,它就像任何程序一样。该程序只生成外国asm。
答案 1 :(得分:1)
假设您只想在C ++中编写ARM汇编程序,因为cross compiling
只取决于您编译该项目的位置。这里有一些指示。
首先,您需要决定语法。从那以后最好使用现有的
从这些结论中,我会使用GNU's syntax,只关注ARM part而忽略其他位。
然后你需要为该语法编写一个解析器。您可以使用解析器生成器,但另一方面,如果可能只是更容易编写自己制作的一只手,因为除了某些情况,程序集语法并不复杂。
如果您可以最终确定解析器,那么您需要能够接收所有指令并将它们编码为写入二进制值。您还需要处理支持语言结构,例如能够在应用程序中的某处保存字符串或任何数据,并允许指令对该地址(地址)采取行动。
作为最后一部分,如果你想生成标准二进制文件,你需要学习并能够以该形式生成二进制文件,以便其他系统如加载器,操作系统可以成功使用汇编程序生成的二进制文件。
答案 2 :(得分:0)
交叉编译器通常基于GCC和binutils。我认为这两个指南可能会有所帮助:
http://sourceware.org/ml/crossgcc/2005-08/msg00114/l-cross-ltr.pdf