【发布时间】: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 没有那么多寄存器,所以当然由你来解决调用约定问题和寄存器使用。
标签: assembly raspberry-pi arm 32bit-64bit cpu-registers