在我的计算机上,编译的可执行文件省略了在循环顶部执行"mov%2,%% ax"
当"添加%1,%% ax"取消注释时.
有人要进行双重检查或评论?
#include <stdio.h>
int main() {
short unsigned result, low ,high;
low = 0;
high = 1;
__asm__ (
"movl $10, %%ecx \n\t"
"loop: mov %2, %%ax \n\t"
// "add %1, %%ax \n\t" // uncomment and result = 10
"mov %%ax, %0 \n\t"
"subl $1, %%ecx \n\t"
"jnz loop"
: "=r" (result)
: "r" (low) , "r" (high)
: "%ecx" ,"%eax" );
printf("%d\n", result);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
跟随生成的程序集
movl $1, %esi
xorl %edx, %edx
/APP
movl …Run Code Online (Sandbox Code Playgroud)