Hexagon_V65_Programmers_Reference_Manual(12)

281 篇文章 30 订阅
30 篇文章 3 订阅

Hexagon_V65_Programmers_Reference_Manual(12)

8.4 栈寄存器

表8-1显示了寄存器:
在这里插入图片描述

寄存器名称描述别称
SP栈指针指向栈顶R29
FR框架指针指向上一个栈R30
LR线寄存器包含了主线上的返回值地址R31
FRAMELIMIT框架限制寄存器包含了栈的最底地址值C16
FRAMEKEY框架关机寄存器包含了框架争夺关键值C17

注:SP、FP和LR是三个通用寄存器的别名(第2.1节)。这些通用寄存器通常专用于用作堆栈寄存器

8.5堆栈指令

Hexagon处理器包括allocframe和DealocFrame指令,用于

在调用堆栈上高效地分配和取消分配堆栈帧。

表8-2描述了这些说明
在这里插入图片描述

语法操作
allocframe(#u11:3)分配堆栈帧。此指令在调用后使用。它首先对LR中的值进行XOR运算和帧键,并推送得到的加扰返回地址和FP到堆栈顶部。接下来,它从SP中减去一个无符号立即数,以便为局部变量分配空间。如果生成的SP小于FRAMELIMIT,处理器引发异常0x27。否则,SP设置为新值,FP设置为堆栈上的旧帧指针。以程序集语法表示的立即数操作数指定字节偏移量。此值必须是8字节对齐的。这个有效范围为0到16 KB
deallocframe释放堆栈帧。在返回之前使用此指令以释放堆栈框架它首先从地址在FP,并将恢复的LR与中的值异或FRAMEKEY来解读回信地址。然后是SPis指向上一帧。
dealloc_return子程序返回堆栈帧取消分配。执行deallocframe操作,然后执行子程序返回(第7.3.3节)到加载的目标地址通过DealocFrame从LR

注意allocframe和DealocFrame加载并将LR和FP寄存器存储在

堆叠为单个对齐的64位寄存器对(即LR:FP)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值