gpt4 book ai didi

c - PowerPC 内联程序集 : Load C Value into Register

转载 作者:太空宇宙 更新时间:2023-11-04 08:01:08 25 4
gpt4 key购买 nike

使用GCC内联汇编,我想将立即数加载到特定寄存器r0。但是,我没有得到正确的结果。

unsigned short value = 0x1337;

asm volatile
(
"li 0, %0\n\t"
"sc\n\t"
"blr"
: /* Output registers */
:"r"(value) /* Input registers */
: /* No clobbered registers */
);

编译时,这给出

li        r0, 9
sc
blr

9 来自哪里?我想要指定的值 0x1337Here是我看过的教程。

最佳答案

9 是包含 0x1337 的寄存器,这正是您所要求的。请注意 value 是如何成为输入寄存器的? 9,又名 r9,是一个完全有效的输入寄存器。这是我得到的程序集输出。

    li 9,4919
li 0, 9
sc
blr

如果你想将 0x1337 作为立即数加载,只需使用它即可。

asm volatile (
"li 0, 0x1337\n\t"
"sc\n\t"
"blr"
);

或者,只使用 "i" 约束而不是 "r" 约束。

asm volatile (
"li 0, %0\n\t"
"sc\n\t"
"blr"
:
: "i"(0x1337)
);

关于c - PowerPC 内联程序集 : Load C Value into Register,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46749753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com