Hexagon的软件栈

来源:互联网 发布:巨拟叶螽淘宝 编辑:程序博客网 时间:2024/06/07 20:07

概述

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

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

 

堆栈的结构

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


 

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

 

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

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

 

Hexagon提供的栈帧

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

 

栈框架包含着如下的元素

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

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

 

栈寄存器

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


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


栈指令

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


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

0 0
原创粉丝点击