在 RPi 4 GCC 和 CLANG 上使用 16 位加载

问题描述 投票:0回答:1

这是从一个更大的示例简化而来的。

在C源代码中,我有:

uint32_t xx = oxdeadbeef ;

我用 gcc -O 或 clang -O 编译

查看 RPi 4 上的“objdump -d a.out”,我明白了

9ac:    5297dde8    mov w8, #0xbeef // #48879
9b0:    72bbd5a8    movk w8, #0xdead, lsl #16

这会产生正确的结果,但是,这些是 16 位值。 在这种情况下,如何强制 gcc 或 clang 使用 32 位?

mov w8, #0xdeadbeef

或者,我愿意吗?

c gcc arm clang raspberry-pi4
1个回答
0
投票

该微控制器没有将立即数 32 值移动到寄存器中,只有 16 位。 2条指令比将值存储在内存中并从内存加载到寄存器更快更短。

这就是为什么你有 2 条说明的原因。

© www.soinside.com 2019 - 2024. All rights reserved.