【问题标题】:Assembly programming the ARM processor on a Sony Ericsson ARC S在索尼爱立信 ARC S 上对 ARM 处理器进行汇编编程
【发布时间】:2012-05-16 18:47:38
【问题描述】:

我有一台索尼爱立信 ARC S。我想用 ARM 汇编语言为它编写一个程序。我熟悉 MIPS 架构和一点 X86。

帮助我开始编写一个简单的程序,并向我展示我需要哪些程序、模拟器或其他东西。

【问题讨论】:

  • 我在github.com/dwelch67 有许多嵌入式 arm 示例和几个模拟器你应该专注于你的教育。

标签: assembly arm


【解决方案1】:

市面上有很多基于 gnu 的交叉编译器,构建自己的交叉编译器非常容易,尤其是如果你只想要汇编语言,你只需要构建 binutils。

wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.gz
tar xzvf binutils-2.22.tar.gz 
cd binutils-2.22
../configure --target=arm-none-eabi --prefix=/pick/a/path --disable-werror --disable-nls
make
sudo make install

你需要选择一个你想安装的地方,我自己喜欢 /gnuarm。可以尝试 /opt/gnuarm 或任何你喜欢的。

如果您不想尝试,请访问 codesourcery.com,它会带您指导购买了 code sourcery 的图形。找ARM的LITE版本,gnueabi版本就可以,linux版本也可以,只需要汇编器和链接器或者编译器、汇编器和链接器。

emdebian 以前有一个工具链,好久没试过了。如果在 Windows 上,人们仍然使用 ygarto 和 winarm。

如果 mips 是您知道的唯一 asm,那么 arm 在某些方面会更简单。 Mips 有点不标准,大多数处理器使用带有进位标志、负标志、零标志、有符号溢出标志 (CNZV) 的程序状态字,您可以使用普通指令、加法、减法等设置这些标志,然后分支他们。使用 mips,您没有状态标志,而是指定说两个寄存器并说如果相等则分支,如果相等则执行减法分支。其他处理器的减法要么通过减法完成,要么通过进行减法但不保存除标志之外的结果的比较来完成。 ARM 的加载和存储有不同的语法,而不是 sw $4,0x10($5) 你会有 str r4,[r5,#0x10] 括号表示间接级别,# 前面是一个常量。 Arms 立即数通常是 8 或 9 位,而在 mips 上立即数是 16 位。使用 arm,您可以在一条指令中存储多个寄存器 stm r0,{r1,r2,r3,r4} 将 r1 存储在 r0 的地址,r2 存储在 r0+0x04 的地址,r3 存储在 r0+0x08 的地址,依此类推在。这通常用于将事物“推入”和“弹出”堆栈。使用 arm 您可以修改存储或加载上的基址寄存器,例如 ldr r1,[r0],#4 括号外的立即数意味着将 r1 存储在 r0 中的地址然后将 4 添加到 r0 使您不必拥有一个附加添加 r0,r0,#4 指令。 Mips 不是唯一具有分支延迟槽的处理器,但出于实际目的假设它是,假设没有其他处理器具有延迟槽,因此不要试图将指令放在分支之后并期望它们执行,你也不分支后需要 nops 等。

gdb 有 armulator 模拟器,它是从 arm 开源的,我不知道如何访问它。 qemu 有很多手臂支撑,但能见度很低。我有 thumbulator,它只是拇指(arm 指令集的简化版本,与 32 位 mips 指令集相比,非常类似于 16 位 mips 指令集),但会给你改变 arm 的感觉,模拟器易于阅读,您可以随意修改以了解正在发生的事情,观察内存总线、寄存器等。skyeye 有许多处理器模拟器、vba 和 nintendo ds 模拟器包含 arm 处理器模拟器。再加上无数的低于 50 美元和一些低于 20 美元的微控制器板,其中包含 arm 处理器。

【讨论】:

    【解决方案2】:

    一个人会使用与其他处理器相同的工具,即 Eclipse、GNU、Visual Studio、Clang 等。只有一个人需要进行第二次安装和下载 ARM 而不是 x86

    除非你有一个 Arm 工作站,否则你将在你的 x86 机器上工作并交叉编译/组装到 ARM 因此需要一些方法将编译后的代码放到 ARM 机器。调试通常通过串行到您的工作站远程完成,因此可以使用符号表。

    【讨论】:

    • 我可以使用eclipse为ARM编写汇编语言吗???如何?你能解释更多吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    相关资源
    最近更新 更多