;定义出所有处理器模式的值,为后面切换处理器做准备
CPU_USER_MODE EQU (0x10)
CPU_FIQ_MODE EQU (0x11)
CPU_IRQ_MODE EQU (0x12)
CPU_SVC_MODE EQU (0x13)
CPU_ABT_MODE EQU (0x17)
CPU_UND_MODE EQU (0x1B)
CPU_SYS_MODE EQU (0x1F)
;接下来设置一下堆栈的栈底和堆栈的大小
;系统模式
STACK_SYS_ADDR EQU (0x33FF8000)
STACK_SYS_SIZE EQU (1024)
;
STACK_ABT_ADDR EQU (STACK_SYS_ADDR - STACK_SYS_SIZE)
STACK_ABT_SIZE EQU (1024)
;未定义模式
STACK_UND_ADDR EQU (STACK_ABT_ADDR - STACK_ABT_SIZE)
STACK_UND_SIZE EQU (1024)
;快中断模式
STACK_FIQ_ADDR EQU (STACK_UND_ADDR - STACK_UND_SIZE)
STACK_FIQ_SIZE EQU (1024)
;中断模式
STACK_IRQ_ADDR EQU (STACK_FIQ_ADDR - STACK_FIQ_SIZE)
STACK_IRQ_SIZE EQU (1024 * 20) ;默认20k给中断
;管理员模式
STACK_SVC_ADDR EQU (STACK_IRQ_ADDR - STACK_IRQ_SIZE)
STACK_SVC_SIZE EQU (1024 * 20)
EXPORT STACK_init
AREA Stack, CODE, READONLY ;定义启动代码区域
汇编之创建堆栈
最新推荐文章于 2024-06-20 16:06:23 发布
本文详细探讨了汇编语言中堆栈的创建过程,解释了堆栈的工作原理,包括SP寄存器的作用、压栈和弹栈操作,并通过实例分析展示了如何在实际编程中设置和使用堆栈。
摘要由CSDN通过智能技术生成