armcc
汇编基础
armcc
汇编中常用的符号
EQU
作用与 C
语言中 #define
类似
SCB_VTOR EQU 0xE000ED08 ; Vector Table Offset Register 向量表偏移寄存器
NVIC_INT_CTRL EQU 0xE000ED04 ; interrupt control state register 中断控制状态寄存器
NVIC_SYSPRI2 EQU 0xE000ED20 ; system priority register (2) 系统优先级寄存器(2)
NVIC_PENDSV_PRI EQU 0x00FF0000 ; PendSV priority value (lowest) PendSV优先级值(lowest)
NVIC_PENDSVSET EQU 0x10000000 ; value to trigger PendSV exception 触发PendSV exception的值
AREA
汇编代码产生指令,当我们新建一个汇编文件写代码时,必须包含类似的指令。
AREA |.text|, CODE, READONLY, ALIGN=2
;AREA表示汇编一个新的数据段或代码段,
;.text表示段名字,如果段名不是以字母开头,而是以其他符号开头则需要在段名两边加上'|',
;CODE表示为代码,
;READONLY表示只读,
;ALIGN = 2,表示当前文件指令要4字节对齐 若ALIGN=n,则2^n对齐
THUMB ;Thumb指令代码 若为 ARM 则为 ARM 指令集
REQUIRE8 ;指定当前文件要求堆栈八字节对齐
PRESERVE8 ;指定当前文件要求保持堆栈八字节对齐
IMPORT
作用与 C
语言中的 extern
类似
IMPORT rt_thread_switch_interrupt_flag ;IMPORT 声明标号来自外部文件,跟C语言的extern关键字类似 这三个变量在cpuport.c文件中定义
IMPORT rt_interrupt_from_thread
IMPORT rt_interrupt_to_thread
EXPORT
EXPORT
输出定义的函数,类似 C
语言的 extern
使其具有全局属性,在外部头文件声明后(rthw.h
中声明) 就可以在 C 文件中调用
rt_hw_interrupt_enable PROC
EXPORT rt_hw_interrupt_enable
ENDP
PROC
关键字 PROC
表示汇编子程序的开始 PROC
伪指令定义函数,ENDP
函数结束
rt_hw_interrupt_disable PROC
EXPORT rt_hw_interrupt_disable
ENDP
END
END
表示汇编文件结束,每个汇编文件都需要有一个 END