我可以将 ARM 处理器配置为升序堆栈增长方向吗?

2023-12-29

这里有一个问题谈到堆栈增长方向。 Michael Burr 回答说,在 ARM 处理器中,堆栈增长方向是可以配置的 - 即降序(正常行为)堆栈向内存中的零地址(较低地址)增长,或者升序,即堆栈向内存中的较高地址增长。

大多数现代系统中堆栈增长的方向是什么? https://stackoverflow.com/questions/664744/what-is-the-direction-of-stack-growth-in-most-modern-systems/664779#664779

我的问题是:在ARM处理器中,如何使堆栈按升方向增长?

如何将堆栈配置为升序(默认情况下为降序)?任何寄存器位设置/重置等。


嗯,ARM 处理器并不直接维护堆栈,但它们确实具有在设计时考虑到这一点的指令:LDM 和 STM。因此,如果您在函数开头使用 STMDB,在函数末尾使用 LDMIA,那么您实际上拥有一个完整+降序堆栈:我记得使用的汇编器允许您将“STMFD”和“LDMFD”编写为别名。 (“完整”堆栈是堆栈指针指向堆栈上最新字的堆栈,而不是指向要使用的下一个位置的堆栈)

因此,这不是您可以在运行时简单地重新配置的东西:尽管如果您使用自己的调用约定编写自己的操作系统,则可以选择使用升序堆栈。同样,您也可以选择不使用 R13 作为堆栈指针 - 这也只是调用约定的一部分。这种选择有效地嵌入到使用堆栈的每个函数的实现中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以将 ARM 处理器配置为升序堆栈增长方向吗? 的相关文章

  • 读取和打印手臂组件中的字符串

    我正在使用 ARMSim 刚刚开始学习汇编 所以如果我看起来一无所知 请原谅我 但我正在尝试从输入文件中读取字符串 然后将其打印到输出屏幕 到目前为止我有 equ SWI Open 0x66 open a file equ SWI Clos
  • C 函数堆栈布局

    我有一个看起来像这样的函数 int bof char str char buffer 12 strcpy buffer str return 1 我正在尝试覆盖其返回地址 我发现我可以通过使用来做到这一点 例如 memcpy buffer
  • 源和目标具有不同的 EABI 版本

    我正在尝试使用 ARM 工具链编译 so 文件 但是我不断收到这个错误 错误 源对象的 EABI 版本为 0 但目标对象的 EABI 版本为 5 我无法更改工具链中的任何内容 因为我必须使用给定的工具链 我以前从未见过这个错误 我使用了这个
  • 为 ARM 交叉编译 zlib

    我尝试为arm poky linux gnueabi交叉编译zlib 但启动 make 时出现错误 zlib 1 2 11 AR HOST ar CC HOST gcc RANLIB HOST ranlib configure prefix
  • 交叉编译 Qt 4.7 时出现“非法指令”

    我已经在这个问题上苦苦挣扎了一个多星期了 但仍然找不到解决方案 我正在尝试为 ARM 设备交叉编译 Qt 4 7 嵌入式开源版本 构建过程本身可以顺利完成 但生成的二进制文件似乎包含处理器无法理解的指令 构建主机是 i386 上的 Debi
  • 有没有办法在 Xcode 4 中为 ARM 而不是 Thumb 进行编译?

    如果有很多浮点运算正在进行 Apple 建议针对 ARM 进行编译 而不是针对拇指进行编译 我的整个应用程序几乎是一个大型浮点运算 iOS 应用程序开发工作流程指南中是这样说的 iOS 设备支持两种指令集 ARM 和 Thumb Xcode
  • 如何使用 Neon SIMD 将无符号字符转换为有符号整数

    如何转换变量的数据类型uint8 t to int32 t使用霓虹灯 我找不到执行此操作的任何内在因素 假设您想要将 16 x 8 位整数的向量转换为 4 个 4 x 32 位整数的向量 您可以通过首先解压缩为 16 位 然后再次解压缩为
  • 使用 Android NDK 使用 -fsigned-char 进行构建安全吗?

    为了与其他平台保持一致 我需要使用signed char在我正在处理的一些本机代码中 但默认情况下在Android NDK上char类型是unsigned 我尝试明确使用signed char类型 但它生成太多警告differ in sig
  • 基于 Windows 8 ARM 的平板电脑上的 VB6

    随着 Windows 8 将支持 VB6 我的问题是 Microsoft 是否在任何地方表示 是或否 VB6 应用程序将在基于 ARM 的平板电脑上运行 如果没有 是否有任何 ARM 模拟器 以便我们可以在 Windows 8 ARM 平板
  • 为什么Python有最大递归深度?

    Python有最大递归深度 但没有最大迭代深度 为什么递归受到限制 把递归当成迭代来对待 而不限制递归调用的次数不是更自然吗 我只想说这个问题的根源来自于尝试实现流 参见这个问题 https stackoverflow com questi
  • 如何设置 CMake 与 clang 交叉编译 Windows 上的 ARM 嵌入式系统?

    我正在尝试生成 Ninja makefile 以使用 Clang 为 ARM Cortex A5 CPU 交叉编译 C 项目 我为 CMake 创建了一个工具链文件 但似乎存在错误或缺少一些我无法找到的东西 当使用下面的工具链文件调用 CM
  • gdb 不会从外部架构读取核心文件

    我正在尝试在 Linux 桌面上读取 ARM 核心文件 但似乎无法找出我的核心文件 有什么方法可以指示 gdb 我的核心文件是什么类型吗 file daemon daemon ELF 32 bit LSB executable ARM ve
  • ARM Chromebook 上的 Android 开发环境?

    我尝试了多次安装和使用安卓工作室 https developer android com studio index html on an ARM Chromebook C100P https archlinuxarm org platfor
  • 英特尔的最后分支记录功能是英特尔处理器独有的吗?

    最后分支记录是指存储与最近执行的分支相关的源地址和目标地址的寄存器对 MSR 的集合 它们受英特尔酷睿 2 英特尔至强和英特尔凌动处理器系列的支持 http css csail mit edu 6 858 2012 readings ia3
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试
  • 在 iOS4 中视图控制器即将弹出时收到通知

    这个问题以前有人问过 但我能找到的答案是 2009 年的 不适合我的问题 让我重申一下这个问题 我有一个UINavigationController产生并推动许多不同的UIViewControllers 入栈 其中之一涉及一些核心数据操作
  • 如何在WinMobile6上启用ARMv6非对齐访问?

    ARMv6 引入了一个很棒的功能 未对齐的内存访问 这使得代码中的某些事情变得更加简单和更快 但微软只在winCE6中提供了API 现在大多数 PDA 都基于 WinMobile6 基于 CE 5 x 默认情况下禁用未对齐访问 我尝试在 C
  • 通过在 R 中填充 NA - 使栅格达到相同程度

    我有几个具有不同几何形状 轮廓的裁剪栅格 具体而言 同一田地的几年的空间产量图 但范围有所不同 测量并不总是整个田地的整体 但在某些年份只是其中的一部分 我想计算这些地图的平均值并将它们组合成一个平均值栅格 然而 这确实意味着 假设 5 层
  • 上下文切换到安全模式(arm trustzone)的成本是多少

    我试图了解在arm中可信 安全 和非安全模式之间来回切换的成本 从非安全世界转移到安全世界时到底需要发生什么 我知道需要设置 ns 位 基于某些特殊指令 需要刷新和更新页表 刷新和更新处理器缓存 还有什么需要发生的吗 处理器缓存 它们是分段
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul

随机推荐

  • 如何在Scala中使用优先级队列?

    我正在尝试在 Scala 版本 2 10 中实现 A 搜索 但我遇到了障碍 我不知道如何使用 Scala 的优先级队列 我有一组正方形 表示为 Int Int s 我需要插入它们的优先级由Ints 在 Python 中 您只有一个键 值对列
  • Ruby on Rails 绘制 gem 图形? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • svn 非 LF 行结束问题 svn:ignore on dump load

    我正在尝试使用转储文件将运行 svn 版本 1 2 3 的系统上的存储库 历史记录完整 迁移到运行 1 7 1 的系统 由于原始存储库是一个早期版本 因此使用svnrdump直接不是一个选择 我用了svnadmin dump然后将 8 GB
  • 在 Google appengine 中禁用版本特定的网址

    Google App Engine 支持版本特定的请求路由 如文档所示 here https cloud google com appengine docs standard python how requests are routed例如
  • 如何使用 Python、Pandas 创建 Decile 和 Quintile 列以根据大小对另一个变量进行排名?

    我有一个数据框 其中一列包含Investment代表交易者投资的金额 我想在数据框中创建 2 个新列 一个给出十分位数排名 另一个给出五分位数排名Investment尺寸 我希望 1 代表投资额最大的十分位数 10 代表投资额最小的十分位数
  • 用于光线/网格相交的 DirectX 11 计算着色器

    我最近将使用 D3DXIntersect 查找光线 网格交点的 DirectX 9 应用程序转换为 DirectX 11 由于 D3DXIntersect 在 DX11 中不可用 我编写了自己的代码来查找交点 该代码仅循环网格中的所有三角形
  • 使用 Pyinstaller 2.0 、PySide 1.1.2 Bindings 和 Qt 4.8 时如何在应用程序中包含图标

    what script looks like 工作应用程序应该是什么样子 在发布之前 我查看了以下问题并尝试将其用作使我的脚本正常工作的指南 但它的用处不大 PyInstaller 不会将 PyQt 的图像加载到 GUI https sta
  • 在 x 轴上绘制日期

    我正在尝试根据日期绘制信息 我有一个格式为 01 02 1991 的日期列表 我通过执行以下操作来转换它们 x parser parse date strftime Y m d 这使19910102 然后我尝试使用 num2date imp
  • 在 PowerShell 2.0 中加载 .NET 4.0 beta2 程序集

    我尝试从加载PresentationFramework dll NET http en wikipedia org wiki NET FrameworkPowerShell v2 0 中的 4 0 beta2 但它失败并出现以下错误 PS
  • 如何围绕对角线旋转 CALayer?

    我正在尝试实现一个翻转动画 用于像 iPhone 应用程序这样的棋盘游戏 动画应该看起来像一个旋转并改变其背面颜色的游戏片段 有点像黑白棋棋子 http en wikipedia org wiki Reversi 我已经成功创建了一个围绕其
  • 在ant中无条件执行任务?

    我正在尝试定义一个任务 该任务在目标完成执行时发出 使用回显 消息 无论该目标是否成功 具体来说 目标执行一个任务来运行一些单元测试 我想发出一条消息 指示结果在哪里可用
  • PushOr 修改 mongodb 子文档的类似操作符

    我想做的是 如果子文档存在 则更新它 否则 仅通过一种方法推送新的子文档 首先 找到 name SweetTown 进而 If Bob存在 我想将其声誉更改为30 Town collection name SweetTown residen
  • 在 Eclipse 下运行 JMH 基准测试

    我正在尝试在 Eclipse 下开始使用 JMH 我可以构建一个 jar 来从命令行执行 但也希望能够直接在 Eclipse 中运行它 以便于开发 目前我得到 java lang RuntimeException ERROR Unable
  • 意图附加未删除/替换

    我正在按按钮设置警报 警报是有意触发的 这个意图得到一个额外的 int 来传递给广播接收器 问题是意图的额外内容在第一个时设置一次 单击该按钮 并且在其他单击时不会发生变化 Intent intent new Intent A this B
  • 如何将字符串列表转换为int列表

    我在列表中有这个列表 a 1 2 3 4 1 2 3 4 1 2 3 4 但我需要它是整数 我不确定在哪里使用 int 将 str 更改为 int a 1 2 3 4 1 2 3 4 1 2 3 4 您可以使用嵌套列表理解 如下所示 a 1
  • 通过 Selenium 解码 facebook 上的类名

    我注意到 Facebook 有一些奇怪的类名 看起来是计算机生成的 我不知道这些类是否至少随着时间的推移保持不变 或者它们在某个时间间隔内发生变化 也许有这方面经验的人可以回答 我唯一能看到的是 当我退出 Chrome 并再次打开它时 它仍
  • 使用 DotNetOpenAuth 的两条腿 OAuth

    我已经阅读了两条腿的 OAuth 并了解其背后的原理 我的问题是特定于DotNetOpenAuth http dotnetopenauth net 8000 图书馆 是否有关于如何通过两条腿身份验证使用 DotNetOpenAuth 的示例
  • CORS - 它保护什么?

    I read https developer mozilla org en US docs Web HTTP Access control CORS https developer mozilla org en US docs Web HT
  • Drupal 6,视图 2:是否可以有一个仅适用于注册用户的过滤器?

    是否可以在 Drupal 6 视图中创建仅适用于注册用户的过滤器 对于我需要的一个过滤器 我使用用户投票 使用 Fivestar 和 VotingAPI 来了解他们的用户是否已经投票给该节点 并且当用户是匿名时 就像来自所有匿名用户的所有投
  • 我可以将 ARM 处理器配置为升序堆栈增长方向吗?

    这里有一个问题谈到堆栈增长方向 Michael Burr 回答说 在 ARM 处理器中 堆栈增长方向是可以配置的 即降序 正常行为 堆栈向内存中的零地址 较低地址 增长 或者升序 即堆栈向内存中的较高地址增长 大多数现代系统中堆栈增长的方向