一个ARM汇编语言源程序的基本结构:
AREA Init, CODE, READONLY
ENTRY
Start
LDR R0, =0x3FF5000
LDR R1, 0xFF
STR R1, [R0]
LDR R0, =0x3FF5008
LDR R1, 0x01
STR R1, [R0]
... ... ... ... ... ...
END
在 ARM( Thumb)汇编语言程序中,以程序段为单位组织代码。
段是相对独立的指令或数据序列,具有特定的名称。段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时需要用到的数据。一个汇编程序至少应该有一个代码段,当程序较长时,可以分割为多个代码段和数据段,多个段在程序编译链接时最终形成一个可执行的映象文件。
可执行映象文件通常由以下几部分构成:
— 一个或多个代码段,代码段的属性为只读。
— 零个或多个包含初始化数据的数据段,数据段的属性为可读写。
— 零个或多个不包含初始化数据的数据段,数据段的属性为可读写。
链接器根据系统默认或用户设定的规则,将各个段安排在存储器中的相应位置。因此源程序中段之间的相对位置与可执行的映象文件中段的相对位置一般不会相同。
在汇编语言程序中,用 AREA 伪指令定义一个段,并说明所定义段的相关属性,本例定义一个 名为 Init 的代码段,属性为只读。 ENTRY 伪指令标识程序的入口点,接下来为指令序列,程序的末尾为 END 伪指令,该伪指令告诉编译器源文件的结束,每一个汇编程序段都必须有一条 END 伪指令,指示代码段的结束。
2. 一个ARM汇编语言的子程序调用
AREA Init, CODE, READONLY
ENTRY
Start
LDR R0, =0x3FF5000
LDR R1, 0xFF
STR R1, [R0]
LDR R0, =0x3FF5008
LDR R1, 0x01
STR R1, [R0]
BL PRINT_TEXT
... ... ... ... ... ...
PRINT_TEXT
... ... ... ... ... ...
MOV PC,BL
... ... ... ... ... ...
END
在 ARM 汇编语言程序中,子程序的调用一般是通过 BL 指令来实现的。
在程序中,使用指令:
BL 子程序名
即可完成子程序的调用
该指令在执行时完成如下操作:将子程序的返回地址存放在连接寄存器 LR 中,同时将程序计器 PC 指向子程序的入口点,当子程序执行完毕需要返回调用处时,只需要将存放在 LR 中的返回地址重新拷贝给程序计数器 PC 即可。在调用子程序的同时,也可以完成参数的传递和从子程序返回运算的结果,通常可以使用寄存器 R0 ~ R3 完成。
关键字:ARM 汇编语言 程序结构
引用地址:
ARM汇编语言的程序结构
推荐阅读最新更新时间:2024-03-16 15:46
ARM状态下各模式寄存器
ARM状态下各模式寄存器小结 所有的37个寄存器分两大类: 31个通用32位寄存器(实际所有对应物理物理寄存器) 6个状态寄存器 R8与R8_fig是不同的寄存器 R0-R7为未分组寄存器,对于任何处理器模式,这些寄存器都对应相同的32位物理寄存器 R8-R12有2个分组的物理寄存器,一个用于FIQ模式,一个用于其他模式(这样可以加快FIQ的处理速度) R13-R14有6个分组的物理寄存器,一个用于用户和系统模式,其余模式分别用于5种异常模式 R13作为堆栈指针(sp) R14作为链接寄存器(LR),用于子程序或异常返回地址 R15程序计数器(PC) CPSR程序状态寄存器 SPSR程序状态保存寄
[单片机]
ARM架构下GCC中progma编译指示字
ARM架构下GCC中progma编译指示字 主要说#pragma pack() 1.为什么要内存对齐 2.裸机代码验证ARM9(S3C2440)的默认对齐字节数 (还不能证实) 3.验证奇数地址访问的可行性 (经实现可以看出,没有对奇数地址有特别要求) 4.struct大小
[单片机]
ARM编程:ARM初始化,堆栈地址是怎样计算的
USR_STACK_LEGTH EQU 64 SVC_STACK_LEGTH EQU 0 FIQ_STACK_LEGTH EQU 16 IRQ_STACK_LEGTH EQU 64 ABT_STACK_LEGTH EQU 0 UND_STACK_LEGTH EQU 0 ; 名称:InitStack ; 功能:堆栈初始化,即初始化各模式下的堆栈指针。 ; 入口参数:无 ; 出口参数:无 ; 说明:在特权模式下调用此子程序,比如复位后的管理模式 InitStack
[单片机]
苹果或推出Arm架构芯片 没有新硬件
6月22日上午消息,外媒彭博社(Bloomberg)发布报道称,预计苹果公司将在WWDC上发布基于Arm架构的芯片和相应的系统/软件更新,但今年晚些时候才会推出相关硬件产品。 这则报道来自彭博社记者古尔曼(Mark Gurman),他认为苹果将公布其使用Arm架构的定制芯片,但直到2020年末或2021年初,才会推出使用Arm芯片的Mac电脑产品。苹果将尽早宣布这些芯片(也就是今年WWDC),以便给开发人员留出时间做相应的软件匹配工作。 Project Calayst的公布是多平淡融合的第一步 根据这份报道,下一代macOS 10.16将改善iOS到Mac的程序移植。苹果去年推出了Project Calayst,该项
[手机便携]
第九届“中国芯”评选结果名单
由工业和信息化部电子信息司、湖北省经济和信息化委员会、工业和信息化部软件与集成电路促进中心(CSIP)主办,武汉东湖新技术开发区管理委员会、武汉市信息产业办公室承办的2014中国集成电路产业促进大会于11月6日在武汉隆重召开。
工业和信息化部杨学山副部长、湖北省人民政府许克振副省长、工业和信息化部电子信息司彭红兵副司长,湖北省经信委欧阳万坤主任,武汉市委常委、东湖高新区党工委胡立山书记,工业和信息化部软件与集成电路促进中心(CSIP)卢山主任、高松涛副主任等部、省、市领导及核高基专家出席了此次大会。
杨学山副部长在致辞中指出,随着我国经济转型升级速度加快,集成电路产业的基础性、战略性、先导性的地位愈发凸显。党中央国务院高度
[单片机]
修改arm开发板IP地址
要修改arm开发板的IP,如果是yaffs2文件,可以 1、首先要修改/etc/init.d/rcS文件,在/sbin/ifconfig lo 127.0.0.0 下添加一行/sbin/ifconfig eth0 192.168.1.20 up 注:192.168.1.20 只是举例,可以改成你想要修改的IP地址 本来这样修改之后就可以的,但是我发现仍然不行,使用ifconfig命令,发现开发板IP地址没有被更改过来。 后来无心插柳,发现还需要修改另一处 2、修改/etc/eth0-setting 将其IP地址改成你想要设置的IP 重启开发板,使用ifconfig命令,就发现IP地址已经修改过来了。
[单片机]
ARM 05年业务高速成长,处理器授权发展势头强劲
英国ARM公司日前发布了其截止至2005年12月31日的2005年第四季度及2005年全年未审计财务报告。报告显示ARM公司2005年第四季度及全年以美元结算总营业收入分别达到1.09亿美元和4.187亿美元,分别增长了8%和14%。第四季度及全年平均运营利润率分别达到35%和32.7%,公司业务继续保持增长和盈利。 2005年第四季度ARM公司以美元结算总营业收入为1.09亿美元,其中包括处理器部门的授权收入3030万美元,处理器部门的版税收入3620万美元,开发系统收入1350万美元,服务收入720万美元,物理IP部门收入2180万美元,其中物理IP授权收入1380万美元,物理IP版税收入800万美元。公司整体订单量在第四季
[焦点新闻]
μC/OS-II与ARM在中央空调机组控制器中的应用
随着中央空调的普及应用,如何对中央空调机组实施有效的控制,是许多科研人员研究的重要课题。目前国内中央空调机组控制器硬件方面主要采用8位单片机为核心处理器,这种方式由于资源有限,导致人机交互不友好、机组的实时监控性能低、整机运转难以实现多机组网联控、节能效果差 。采用RISC架构的ARM微处理器具有小体积、低功耗、低成本、高性能的特点,指令执行速度快,执行效率高,且具有丰富的片内外围电路,有利于简化系统设计,提高系统可靠性。本控制系统选择了Philips公司ARM7处理器LPC2210,移植了实时操作系统μC/OS-II,系统运行稳定可靠。 1 空调系统简介及控制要求 中央空调由集中制冷/加热站和空调机组两大部分组成。前者提供
[单片机]