想用C ++编写Arm Cortex交叉汇编程序

时间:2013-09-27 13:10:25

标签: assembly compiler-construction arm cross-compiling cortex-m3

基本上我将进入最后一年,一个有趣的提议项目构想是用C ++为Arm Cortex M创建一个交叉汇编程序 -

Web上的所有信息都说明了如何在C ++中为arm交叉编译,而不是交叉编译器本身的源代码的方式/位置。

我应该搜索哪些具体内容?你有什么建议可以避免重大旅行吗?

提前致谢!

3 个答案:

答案 0 :(得分:1)

交叉*汇编程序*的等价性将是GAS编译(在主机H上)以在目标X上运行,但汇编目标Y的代码。

GCC是汇编程序的实现语言。但是,由于你的交叉汇编程序可能与GCC ++在同一平台上运行,它就像任何程序一样。该程序只生成外国asm。

答案 1 :(得分:1)

假设您只想在C ++中编写ARM汇编程序,因为cross compiling只取决于您编译该项目的位置。这里有一些指示。

首先,您需要决定语法。从那以后最好使用现有的

  1. 将使您的工作更轻松
  2. 为已经习惯的用户提供
  3. 可以使用现有工具验证您的项目。就像你可以使用标准编译器为一段片段生成程序集并运行你自己的汇编程序来生成一个二进制文件。
  4. 从这些结论中,我会使用GNU's syntax,只关注ARM part而忽略其他位。

    然后你需要为该语法编写一个解析器。您可以使用解析器生成器,但另一方面,如果可能只是更容易编写自己制作的一只手,因为除了某些情况,程序集语法并不复杂。

    如果您可以最终确定解析器,那么您需要能够接收所有指令并将它们编码为写入二进制值。您还需要处理支持语言结构,例如能够在应用程序中的某处保存字符串或任何数据,并允许指令对该地址(地址)采取行动。

    作为最后一部分,如果你想生成标准二进制文件,你需要学习并能够以该形式生成二进制文件,以便其他系统如加载器,操作系统可以成功使用汇编程序生成的二进制文件。

答案 2 :(得分:0)

交叉编译器通常基于GCC和binutils。我认为这两个指南可能会有所帮助:

http://sourceware.org/ml/crossgcc/2005-08/msg00114/l-cross-ltr.pdf

http://www.rockbox.org/wiki/CrossCompiler

相关问题