这让我感到困惑,我真的无法弄清楚为什么我会遇到这个问题。我要在 c 中创建一个程序,该程序在设置 C 标志之前输出一个无符号值,使用程序集通过 addcc 累积一个变量,并将该值发送回 c 中的 main。我相信我的 c 代码是正确的:
unsigned int func();
int main(void){
printf("The max value before the C flag is set is: %u\n", func());
}
现在问题出现在程序集上......
.global func
func: save %sp, -128, %sp
addcc %g0, 1, %g0
clr %l0
loop:
bcs away
mov %l0, %i0
addcc %i0, 1, %l0
ba loop
nop
away:
ret
restore
这应该做的是累积 %l0,当设置 C 标志时,将值传递回 %i0 并返回它。当我运行这个时,我得到 0。这对我来说很有意义,因为我相信我应该得到一个更大的数字。任何帮助,将不胜感激。