如何将其转换为 32 位架构 ARM 程序集
Posted
技术标签:
【中文标题】如何将其转换为 32 位架构 ARM 程序集【英文标题】:How to convert this to 32 bit architecture ARM assembly 【发布时间】:2021-12-12 08:36:24 【问题描述】: stp x29, x30, [sp, -48]!
mov x29, sp
str wzr, [sp, 44]
bl __isoc99_scanf
add x0, x0, :lo12:.LC1 //.LC1 is a function
不明白如何将其转换为树莓派的 ARM 程序集
【问题讨论】:
这已经是 AArch64(又名 ARM64)程序集了。您的意思是将 64 位 ARM asm 转换为其他东西,即 from ARM64?例如将其移植到仅 32 位的 RPi 上运行?这显然是现有功能的一部分,作为一个片段并没有多大意义。即我们不知道 scanf 的参数来自哪里;该代码只是保存帧指针和链接寄存器,并存储一个 32 位零。 将其转换为 32 位 ARM 程序集。 pi 可以在 aarch32 或 aarch64 中运行,它不是专门为 aarch64。这是编译后的代码吗?您不能使用不同的目标重新编译更高级别的代码吗?否则,两个指令集的 arm 文档都在线,您可以简单地查找指令。 aarch32 没有那么多寄存器,所以当然由你来解决调用约定问题和寄存器使用。 【参考方案1】:我根据__isoc99_scanf
的存在猜测这段代码是由 C 编译器编写的,在这种情况下,您可以使用编译器将 C 代码转换为 ARM 程序集。
【讨论】:
以上是关于如何将其转换为 32 位架构 ARM 程序集的主要内容,如果未能解决你的问题,请参考以下文章
2023 年淘汰 32 位 ARM 将全面转向 64 位 CPU 架构