【方辉专栏】ARM嵌入式编译器(十) GNU 汇编和 armasm 汇编代码介绍
发布时间:2022-09-05

摘要: 本文主要对Arm Compiler 6编译器的 GNU汇编和armasm 汇编进行介绍。

关键字:Arm Compiler 6、编译器、 GNU汇编、armasm 汇编。


Arm Compiler 6可以为GUN语法汇编和armasm汇编语法进行编译。GUN和armasm两种汇编代码有着不同的语法。它们有很多相似之处,也有不同之处。


1. GNU汇编

通过.section伪操作来自定义一个段;汇编行都是如下结构

[<label>:][<instruction or directive or pseudo-instruction>} //comment

          <label>: 为标号, GNU汇编中,任何以冒号结尾的标识符都被认为是一个标

instruction为指令

directive为伪操作

pseudo-instruction为伪指令

          comment为语句的注释

// Simple GNU syntax example

// Iterate round a loop 10 times, adding 1 to a register each time.

.section .text,"ax"

.balign 4

main:

MOV      w5,#0x64      // W5 = 100

MOV      w4,#0         // W4 = 0

B        test_loop     // branch to test_loop

loop:

ADD      w5,w5,#1      // Add 1 to W5

ADD      w4,w4,#1      // Add 1 to W4

test_loop:

CMP      w4,#0xa       // if W4 < 10, branch back to loop

BLT      loop

.end

对于GNU语法需要使用armclang集成汇编器来汇编 GNU 汇编代码。如下示例:

armclang --target=aarch64-arm-none-eabi -c -o file.o file.S


2. armasm 汇编

armasm汇编格式:MNEMONIC{S}{condition} {Rd}, Operand1, Operand2

MNEMONIC     - 指令简称(助记符)

{S}          - 可选后缀

{condition}  - 执行指令条件

{Rd}         - 用于存储结果的寄存器(目的寄存器)

Operand1     - 操作数1

Operand2     - 操作数2

; Simple armasm syntax example

; Iterate round a loop 10 times, adding 1 to a register each time.

AREA ||.text||, CODE, READONLY, ALIGN=2

main PROC

MOV      w5,#0x64      ; W5 = 100

MOV      w4,#0         ; W4 = 0

B        test_loop     ; branch to test_loop

loop

ADD      w5,w5,#1      ; Add 1 to W5

ADD      w4,w4,#1      ; Add 1 to W4

test_loop

CMP      w4,#0xa       ; if W4 < 10, branch back to loop

BLT      loop

ENDP

END


对于armasm汇编需要使用armasm汇编器来汇编代码。如下示例:

armasm --cpu=8-A.64 -o file.o file.s


来源:《Arm® Compiler for Embedded User Guide Version 6.18》

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


关于美狮贵宾会电子

美狮贵宾会电子技术有限公司(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。

20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。美狮贵宾会电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。


欢迎关注“美狮贵宾会电子”公众号

了解更多研发工具软件知识