您遇到的是,当C程序被编译为汇编语言时,您的toUpper函数最终像这样结束:
_toUpper:LFB4: pushq %rbpLCFI3: movq %rsp, %rbpLCFI4: movb %dil, -4(%rbp) cmpb $96, -4(%rbp) jle L8 cmpb $122, -4(%rbp) jg L8 movzbl -4(%rbp), %eax subl $32, %eax movb %al, -4(%rbp)L8: leave ret
在%eax寄存器中进行32的减法。在x86调用约定中,这是期望返回值的寄存器!所以…你很幸运。
但是请 注意警告。 他们在那里是有原因的!



