【发布时间】:2026-02-25 03:15:02
【问题描述】:
我在bss 中有一个名为LABELX 的标签,我在其中维护了一个64 位地址。在我的代码中是这样介绍的:
.section .bss
.lcomm LABELX, 16 ### I reserved 128 bit to have the same length as XMMs
在我的代码中,我有一个减法如下:
psubd LABELX, %xmm11
取值如下:
Value in XMM11 : F7A2D830 ### the higher bits are all zeros.
Value at LABELX: 7FFFF7A2D740
我希望从 XMM11 中减去存储在 LABELX 中的最低 32 位值,并将结果存储在 XMM11 的最低 32 位中。为什么会出现分段错误?
【问题讨论】:
-
LABELX 是否对齐到 16 个字节?
-
引用manual,"对于 .lcomm 指令不接受对齐参数的目标,这是大多数 ELF 目标的情况,.local 指令可用于与 .comm 组合(参见 Comm)来定义对齐的本地公共数据。"
标签: assembly x86-64 gnu-assembler