0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arm64栈回溯 结构介绍

麦辣鸡腿堡 来源:人人极客社区 作者:业余程序员plus 2023-07-28 11:25 次阅读

Arm64有4种栈,分别是空增栈(Empty Ascendant Stack,EA)、空减栈(Empty Descendant Stack,ED)、满增栈(Full Ascendant Stack,FA)、满减栈(Full Descendant Stack,FD)。常用的是满减栈,Linux内核也使用满减栈。

下图是一个满减栈的示意图,高地址为栈顶,低地址为栈低,栈向低地址方向生长,如右边的箭头所示。栈指针SP指向栈底(栈低保存了数据)。

每产生一次函数调用,就会在栈中形成一个栈帧,该栈总共保存了4个栈帧(Stack Frame),每个栈帧由FP、LR及栈参数(函数参数、函数局部变量等)组成。可以将栈中的所有栈帧视为一个单项链表,栈最低位置的栈帧为链表头,栈最高位置的栈帧为链表尾,整个链表使用FP索引

栈手动回溯时,可以根据FP将所有栈帧索引出来。

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1309

    浏览量

    39846
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206734
收藏 人收藏

    评论

    相关推荐

    如何对RK3399 CPU arm64的内核进行配置

    如何对RK3399 CPU arm64的内核进行配置?
    发表于 02-16 06:20

    浅析openat系统调用在arm64下的实现及使用原理

    1. 简介这篇文章主要介绍系统调用在arm64下的实现及使用原理,考虑到目前bpf在系统调试和调优工作中被大量使用,在文章的最后也简单介绍一下系统调用相关的bpf工具。系统调用在每个平台的实现方式
    发表于 06-02 17:48

    介绍ARM64架构下启动多核的两种方式

    1、ARM64的多核启动流程分析工作中遇到的多核 ARM CPU 越来越多,总结分享一些多核启动的知识,希望能帮助更多小伙伴。在 ARM64 架构下如果想要启动多核,有 spin-table
    发表于 06-13 18:23

    Tars移植到ARM64平台上的过程实现

    计时器来实现,具体实现如下。原x86嵌汇编实现:支持ARM64平台后的实现:3 协程实现协程是一种用户态的轻量级线程,其调度完全由用户控制。因此,协程调度切换时需要用户自己将寄存器和保存到其他地方,再
    发表于 07-05 14:59

    arm64和x86服务器上运行的耗时来发现Docker在arm64架构下的性能问题

    现在的进展并不快,因为老测试集里面用例数量庞大。目前,老测试集中的用例数量还远远大于新测试集。问题大量的集成测试用例为性能研究提供了方便。笔者通过比较同一测试集在arm64和x86服务器上运行的耗时来
    发表于 07-12 15:48

    请教一下大神arm64硬件断点和arm有哪些区别?

    请教一下大神arm64硬件断点和arm有哪些区别?求解
    发表于 08-12 11:38

    ARM64ARM32 的Linux程序区别在哪里

    arm64ARM64。我在示例中使用了AArch64寄存器,但我所描述的许多问题也发生在ARMv8-A 32位执行状态。
    的头像 发表于 08-09 09:51 2.6w次阅读
    <b class='flag-5'>ARM64</b>与<b class='flag-5'>ARM</b>32 的Linux程序区别在哪里

    微软发布x64ARM模拟器

    现在,ARM64设备上的Windows系统,也可以运行64位的x86应用程序(x64)了。
    的头像 发表于 12-13 10:04 5382次阅读

    ARM64 Linux内核页表的块映射

    内核文档Documentation/arm64/memory.rst描述了ARM64 Linux内核空间的内存映射情况,应该是此方面最权威文档。 以典型的4K页和48位虚拟地址为例,整个内核空间
    的头像 发表于 01-04 13:37 2357次阅读
    <b class='flag-5'>ARM64</b> Linux内核页表的块映射

    Core 3399KJ Linux根文件系统镜像(arm64/arm32)

    电子发烧友网站提供《Core 3399KJ Linux根文件系统镜像(arm64/arm32).txt》资料免费下载
    发表于 09-14 10:08 3次下载
    Core 3399KJ Linux根文件系统镜像(<b class='flag-5'>arm64</b>/<b class='flag-5'>arm</b>32)

    Core 3399J Linux根文件系统镜像(arm64/arm32)

    电子发烧友网站提供《Core 3399J Linux根文件系统镜像(arm64/arm32).txt》资料免费下载
    发表于 09-14 09:24 0次下载
    Core 3399J Linux根文件系统镜像(<b class='flag-5'>arm64</b>/<b class='flag-5'>arm</b>32)

    AIO 3399ProC Linux根文件系统镜像(arm64/arm32)

    电子发烧友网站提供《AIO 3399ProC Linux根文件系统镜像(arm64/arm32).txt》资料免费下载
    发表于 09-21 09:52 11次下载
    AIO 3399ProC Linux根文件系统镜像(<b class='flag-5'>arm64</b>/<b class='flag-5'>arm</b>32)

    openEuler实例:K3s ARM64集群管理

    AWS可以很方便创建ARM64环境,使用openEuler AMI创建EC2实例,c6g.xlarge 规格完全可以满足Rancher的部署需求。
    发表于 04-18 10:44 431次阅读

    海凌科新款arm64开发板wukongPi 4B简述

    海凌科新款arm64开发板——wukongPi 4B上架,兼容树莓派,采用RK3399 SoC。
    的头像 发表于 08-07 14:53 611次阅读
    海凌科新款<b class='flag-5'>arm64</b>开发板wukongPi 4B简述

    ARM64位与ARM32位OP-TEE启动过程的差异

    ARM32的OP-TEE与ARM64的OP-TEE启动过程大致相同。ARM64的OP-TEE的_start函数定义在generic_entry_a64.S文件中,而且该函数不像
    的头像 发表于 11-07 15:12 284次阅读