MacOS 中 ARM64 汇编 ldr =address 伪指令导致运行时崩溃的原因及解决

MacOS 中 ARM64 汇编 ldr =address 伪指令导致运行时崩溃的原因及解决_第1张图片

0. 概览

我们知道在 MacOS 的 as 汇编器中有一条 ldr 伪指令,使用它我们可以非常方便的将立即数加载到寄存器中。

不过,当 ldr 的源操作数是一个标签(Label)时,就会导致在运行时发生崩溃:

MacOS 中 ARM64 汇编 ldr =address 伪指令导致运行时崩溃的原因及解决_第2张图片

如上图所示,第 21 行指令会导致运行时崩溃。

这是什么原因?又该如何解决呢?

闲言少叙,Let‘s go!!!


1. ldr 伪指令探究

在 MacOS 的 as 汇编器(以下简称 as )中, ldr 指令根据不同使用情境有着不同的功能。

当 ldr 源操作数不以 = 号开头时,它被转换成一条货真价实的 ARM64 机器指令:

ldr x0, [

你可能感兴趣的:(Asm,macos,as,汇编器,ldr,=,ARM64,汇编,bus,error)