设为首页 加入收藏

TOP

4.1.3 基于Linux下GCC的汇编语言程序结构
2013-10-12 06:57:12 来源: 作者: 【 】 浏览:101
Tags:4.1.3 基于 Linux GCC 汇编 语言程序 结构

4.1.3  基于Linux下GCC的汇编语言程序结构

Linux下GCC的汇编程序语言程序是以程序段为单位进行组织的。Linux下GCC的汇编语言规则总结如下。

所有的指令均不能顶格写。

大小写区分(要么全部大写,要么全部小写,不可以大小写混用)。

代码标号必须在一行的顶格,后面要加上冒号":"。

注释的内容可以使用符号"@",其后面的内容编译器会放弃编译。注释可以在一行的顶格。

下面以一个简单的汇编程序example1.s为例,对上述规则做具体介绍。

  1.             .EXAMPLE1               @表示是只读代码段  
  2. _START: .GOLBAL     START       @START作为链接器使用  
  3.             .GOLBAL     MAIN        @MAIN函数  
  4.             B           MAIN        @跳转至MAIN函数  
  5. MAIN:  
  6.             MOV         R0,#0       @R0=0  
  7.             LDR         R1,#1       @R1=1  
  8. ADDOP:  
  9.             ADD         R2,R1,R0    @R2=R1+R0  
  10.             MOV         PC,LR       @程序结
    束,交出对CPU的控制权  
  11.             .END 

对程序的说明如下。

程序中出现的PC是程序计数器,它是寄存器R15的别名。LR是链接寄存器,它是寄存器R14的别名。当使用B指令调用MAIN函数过程时,MAIN函数的返回地址PC将存放到LR中,所以程序最后"MOV PC,LR"即将LR的值放入PC,执行的就是函数返回操作。

另外有关编译需要说明的是:

在Linux下,需要使用arm-linux-gcc对程序进行交叉汇编和链接,在终端中输入命令:arm-linux-gcc example1.s -o example1。

注意:不能用GCC编译,因为GCC是支持x86系列的处理器,而我们这里则是基于ARM的处理器。

在Linux下,也可以通过GCC、arm-linux-gcc编译器来生成.s的汇编程序文件,终端命令格式为:gcc -S filename.c,生成的文件名为filename.s。参数-S表示只进行预处理、编译,而不进行汇编。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.4.2 从光盘安装Linux(1) 下一篇4.2.1 基本的ATPCS规则

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: