ARM汇编程序结构

一个ARM程序可以被划分为多个代码段和数据段,在汇编的时候这些段会被形成一个可执行文件

.text   ;正文段,包含程序的指令代码
.data ;数据段,包含固定的数据,如常量,字符串
.bss ;未初始化数据段,包含未初始化的变量,数组等
.sdata
.sbss
.section .data
;initialized data .section .bss
;uninitialized data .section .text
.global _start _start:
;instruction code

子程序调用

ARM汇编中,子程序的调用一般通过BL指令实现,在程序中,执行BL 子程序名即可完成子程序的调用。该指令在执行时完成如下操作:

  1. 将子程序的返回地址保存在LR
  2. 将PC指向子程序的入口
  3. 子程序执行完毕需要返回时只需将PC指向LR即可
.text
.global _start
_start:
ldr r0, =0x3ff5000
ldr r1, 0xff
str r1, [r0]
ldr r0, =0x3ff5000
ldr r1, 0x01
str r1, [r0]
bl print_text ;执行跳转 ...
print_text:
...
mov pc, bl
...

ARM汇编程序结构的更多相关文章

  1. ARM汇编程序中的伪指令

    转自http://blog.chinaunix.net/uid-13701930-id-336459.html 4.1 ARM汇编器所支持的伪指令 在ARM汇编语言程序里,有一些特殊指令助记符,这些助 ...

  2. ARM汇编程序基本知识

    ARM汇编程序基本知识 1.汇编程序的基本组成 ARM汇编语言程序中,程序是以程序段为单位组织代码的.段是相对独立的指令或者代码序列,拥有特定的名称.段的种类有代码段.数据段和通用段,代 码段的内容为 ...

  3. arm: 使用结构体操作寄存器

    使用结构体操作寄存器: //寄存器赋值和取值的时候,要注意寄存器的长度,有的寄存器的值只有8位. //还要注意,使用volatile修饰寄存器变量.volatile 参考http://www.cnbl ...

  4. arm 异常处理结构

    概念:正常的程序执行过程中发生暂时的停止称为异常,如果发现异常情况,将会进行异常处理 作用:快速响应用户的行为,提高cpu的响应能力 异常类型: 异常处理的三个步骤: 1.保护现场: 工作模式保存:C ...

  5. ARM汇编程序闪烁灯与其反汇编代码比较

    /* *LED闪烁 *led.s */ #define GPJ0CON 0xE0200240 #define GPJ0DAT 0xE0200244 .global _start //把 _start ...

  6. linux下的arm汇编程序

    1.gnu 的编译环境搭建 解压编译工具,加入环境变量PATH 2.编译相关命令的使用 编译命令 arm-linux-gcc  -g -c -o led.o main.o led.c main.c / ...

  7. ARM指令教程

    ARM指令教程 ARM汇编程序特点: l         所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理 ...

  8. ARM 汇编指令

    ARM汇编程序特点: l         所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通 ...

  9. 【基于Android的ARM汇编语言系列】之三:ARM汇编语言程序结构

    作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...

随机推荐

  1. Mongoose使用案例--让JSON数据直接入库MongoDB

    目录 1.准备工作. 2.配置Mongoose. 3.创建目录及文件. 4.插入数据,POST提交JSON增加一条记录. 5.查询数据,取出你插入数据库的记录. 一.准备工作 使用Express4创建 ...

  2. 【原创】Silverlight DataGrid对核心控件DataGrid的任意单元格进行获取和设置分析。

    前几天,公司同事有个需求需要对系统中的DataGrid控件的指定单元格(如图,申请人ID)进行禁用设置,尝试了很多次总是 整行整列的 禁用 没实现效果. 网上资料较少,没找到解决措施. 尽管silve ...

  3. PPT里面添加3Dvia Composer Player 控件

    本实例是Office 2013 版本 1打开文件-选项---自定义功能区--主选项卡 ---开发工具 :如图 4然后将在菜单栏里面看到 开发工具 5然后将出出一个十字 绘制你想要的区域 6 鼠标右击 ...

  4. csharp: .NET Object Relationional Mapper (ORM)- SubSonic

    https://github.com/subsonic/SubSonic-3.0 http://subsonic.codeplex.com/ https://code.google.com/archi ...

  5. MVC依赖性注入概述

    MVC框架之所以如此受欢迎的原因之一就是它十分注意支持关注分离,使各个功能部件尽量能够相互独立.今天我们就来看看MVC4如何使用DI方法实现一些组件的独立,使本来结合紧密的部件,松耦合.我现在所说的对 ...

  6. CAST function should support INT synonym for SIGNED. i.e. CAST(y AS INT)

      Login / Register Developer Zone Bugs Home Report a bug Statistics Advanced search Saved searches T ...

  7. SQLServer并发问题,先SELECT后UPDATE,避免并发脏读情况解决

    在SQL Server中,需要对数据操作进行先SELECT 之后UPDATE,对于这样的操作,如果出现高并发,可能导致脏读情况的发生.不能保证数据的同步. 解决方案是在事物中对表进行加更新锁: 事务一 ...

  8. 使用NPOI创建Excel

    一.NPOI 函式庫: NPOI 函式庫檔案有七個,NPOI 函式庫可以在 http://npoi.codeplex.com 中下載,分別是: NPOI.DLL:NPOI 核心函式庫. NPOI.DD ...

  9. 《Effective C#》读书笔记

    Effiective C# Item1 : 使用属性代替成员变量 Effective C# Item2:运行时常量(readonly)优于编译时常量(const) Effective C# Item3 ...

  10. OData V4 系列 Ajax请求 CRUD

    OData 学习目录 上一篇已经完成了服务创建,本篇主要介绍如何通过Ajax请求Odata服务,OData操作主要有 Get.Post.Patch.Put.Delete等操作.   Post 操作 p ...