Hexagon的软件栈

概述

Hexagon处理器中包括了专用的寄存器以及指令,用于为子程序执行实现调用堆栈。

堆栈的结构遵循传统C标准。

 

堆栈的结构

下图给出了Hexagon处理器中的堆栈结构


 

堆栈的地址被定义为从高地址向低地址延伸。堆栈的指针SP指向当前堆栈中的顶部数据元素。

 

注:Hexagon处理器支持三种堆栈指令:allocframe,deallocframe以及dealloc_return

SP寄存器的地址必须保持8位对齐,这主要是为了堆栈指令能够合适的运行

 

Hexagon提供的栈帧

栈是用来保存栈框架的,这是一种用于保存程序中活跃子程序的状态信息的数据结构(活跃子程序指那些被调用但未返回的程序)。每个栈框架对应着程序中的一个子程序。

 

栈框架包含着如下的元素

  • 本地变量以及被子程序使用的数据
  • 子程序调用的返回地址(从连接寄存器LR中压入)
  • 栈上为以前的栈框架开辟的地址(从帧指针寄存器FP中压入)

帧指针寄存器FP总会拥有一个栈上上一次的栈框架。这一设计使得debugger能够通过检查内存中的栈实现对程序的查错功能,并轻松的定义调用指令,功能参数等。

 

栈寄存器

下图是hexagon处理器中的栈寄存器图


注:栈寄存器是三个通用寄存器的别名。这些通用寄存器是专门用于栈寄存器使用的


栈指令

下图是高通官方给出的三种指令的具体含义以及操作:


注:allocframe以及deallocframe将会导入并保存LR以及FR寄存器,以一个单一对齐的64位寄存器对保存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值