我正在使用带有 linux/riscv64 目标的 Go 1.14,并且我正在编译一个 hello world,我在程序集中看到了这个:
1b078: 04813183 ld gp,72(sp)
1b07c: 00018003 lb zero,0(gp)
1b080: 00313423 sd gp,8(sp)
正如您所看到的,从 [GP+0] 开始,负载为零,根据规范,这应该是“异常或其他”:
即使加载值被丢弃,目标为 x0 的加载仍必须引发任何异常并导致任何其他副作用。
这里到底发生了什么?编译器是否产生错误的输出?
守着一只汪
相关分类