关于ARM汇编程序的理解

来源:互联网 发布:2016移动支付数据 编辑:程序博客网 时间:2024/05/17 00:19

            ARM汇编程序的理解

先看下面一个程序:

                 AREA    TigerJohn,CODE,READONLY;声明代码段

                     CODE32                      ;声明为32ARM指令

                     ENTRY                        ;声明程序入口

START           MOV      R0 ,#0

                     MOV R1 ,#1

                     ADD R1, R1,R0

                     B     START

                     END

针对以上程序,说明如下:

1、在汇编程序中,只有标号才能顶格写,其他的不要顶格写。

2、ARM汇编程序中用“;”号进行注释。

3、一个完整的ARM汇编由两部分组成:声明,实际代码段

  1)、声明代码段:用来定义一个段,并说明一个段的名字和属性。AREA后面跟的字符串为段名,CODE表明此段为代码段,READONLY说明此代码段具有只读属性。

       段分为:(1)代码段:代码段的内容为执行代码

               (2)数据段:数据段存放代码运行时需要用到的数据。

       段的属性:(1)READONLY:只读

                 (2)READWRITE:读写

   2)、声明指令集:用CODE32或CODE16来声明程序为32位ARM指令或是16位Thumb指令。(有些资料说这个声明是必须的,可是我认为在ADS编译的ARM程序可以没有这个,

        使用什么指令集可以在ADS中设置)

      3)、声明程序入口:用ENTRY指令标示程序的入口点。

      4)、声明程序的结束:在程序完成后用END指令声明程序的结束。没一个汇编程序段必须有一条END指令,指示代码段的结束。

注:(1)ARM汇编语言程序中,以程序段为单位组织代码。段是相对独立的指令或数据序列,具有特定的名称。

    (2)一个汇编程序至少有一个代码段。如果程序较长时,可以分割为多个代码段和数据段。多个段在程序编译连接时最终形成一个可执行的映像文件。