• Hexagon_V65_Programmers_Reference_Manual(12)


    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)

  • 相关阅读:
    把list集合转换成另一个list集合的三个方法
    Leetcode 735. 小行星碰撞
    45-3 护网溯源 - 为什么要做溯源工作
    Webpack--动态 import 原理及源码分析
    [网络安全] PKI
    谈对数据库索引的认识
    什么是窃听攻击、XSS攻击、CSRF攻击?
    MATLAB算法实战应用案例精讲-【数模应用】置换检验(附MATLAB和R语言代码)
    AI 游戏工具收集
    26 行为型模式-命令模式
  • 原文地址:https://blog.csdn.net/weixin_38498942/article/details/126030905