ARM64 内存实验室
个人学习空间
LEARN BY DOING · 从零开始

让每一次寻址,看得见。

改一个寄存器,走一步指令。从内存中的字节,读懂 ARM64。

⌘ 指令实验台

从计算地址开始

▦ 内存视图

小端序
每格 1 字节 · 点击可编辑0x2000–0x203F
X1 所指地址本次读取格内均为十六进制
地址标在上方,字节值显示在格内。

寄存器观察窗

执行前
X064 位 · W0 是右侧低 32 位
FFFFFFFF高 32 位
FFFFFFFF低 32 位 · W0
X1基址寄存器

CHECK YOUR UNDERSTANDING

本关小测
完成单步执行和小测,点亮这一关。

随手查一查

本实验站演示 A64 普通内存的小端序读取。每个地址对应 1 字节;以 0x 开头的数为十六进制。

LDR W0, [X1]
从 X1 保存的地址起读取 4 字节,写入 W0,同时把 X0 高 32 位清零。地址寄存器仍使用 X。
LDR X0, [X1]
读取连续 8 字节,覆盖整个 X0。W0 是同一个寄存器的低 32 位。
[X1, #offset]
按字节计算 X1 + offset,X1 保持原值。本关限定无符号立即数形式:偏移为读取宽度的倍数,最大为宽度 × 4095。
[X1, X2, LSL #n]
偏移 = X2 × 2ⁿ。本模型的 LDR W 可用 n=0 或 2;LDR X 可用 n=0 或 3。
[X1, W2, SXTW #n]
先将 W2 解释为有符号 32 位数并符号扩展到 64 位,再左移 n 位。例如 0xFFFFFFFF → -1,移 2 位后偏移为 -4 字节。
[X1, #offset]! · pre-index
使用 X1 + offset 读取,成功后 X1 更新为该地址。
[X1], #offset · post-index
使用原 X1 读取,成功后 X1 更新为 X1 + offset。前/后索引偏移为 -256~255 字节。
小端序
低地址的字节放在结果的低位。地址从低到高为 78 56 34 12,组合结果为 0x12345678。

这是教学模拟器,分步表示地址计算、读取和提交结果的逻辑阶段,不代表 CPU 内部时序。限定 64 字节实验内存与 X0/X1/X2;不模拟 MMU、异常级别、缓存或设备内存。越界会停止执行,不更新寄存器。进度仅保存在当前浏览器。

编辑字节