字符串常量作为立即操作数的 Little Endian 字节存储?

Little Endian byte storage for character string constants as immediate operands?

处理器使用小端字节序在内存中存储字节

mov rax, "bloopers"
mov [s_out], rax

在这种情况下,什么存储在地址 [s_out][s_out+7] 当我打印 s_out

时会发生什么

我很困惑,因为 rax 会将 "bloopers" 存储为 "srepoolb"。

但我不知道如果将 rax 移动到 s_out 会发生什么。它的工作方式与寄存器的工作方式相同吗?

我学到了什么:

mov rax, "bloopers" 将字符串 "bloopers" 存储在 rax 中,但是当以小端格式查看内存时,它显示为 0x737265706f6f6c62.

mov [s_out], rax 只是按顺序存储字符串 "bloopers"。因此,在内存地址 s_out,它包含字符 b,在 s_out+7,它包含 s.

这在 https://www.nasm.us/doc/nasmdoc3.html#section-3.4.3 中记录了 NASM。对于具有多个字符的字符常量,其他汇编器的行为类似。

感谢@fuz 和@Ped7g 对我的帮助。