我正在搜索代码示例,用于在gcc中将值与内联汇编进行比较。我需要将值赋值给asm代码。我试过一些例子,但是他们没有正常工作。 总是有错误,或者我不理解结果。
我只需比较两个值并返回结果。
movl my_val, %eax
cmpl %eax,$0xfffffffa
je equal
equal:
movl $0xfffffffa,my_val
答案 0 :(得分:1)
此计划会将value
上的argv[1]
与我的amd64上的$0x1
进行比较,因此您可能需要修复它才能使用您的架构:
#include <stdio.h>
int main(int argc, char* argv[]) {
int value, result;
value = atoi(argv[1]);
result = 0;
__asm__ ( "xor $0x1,%%eax;\n"
"jnz end;\n"
"movl $0xfffffffa,%%ebx;\n"
"end:\n"
:"=b"(result)
:"a"(value)
);
if (result) {
printf("Equals!\n");
}
return 0;
}
现在编译并运行它:
$ gcc -o comp comp.c
$ ./comp 0
$ ./comp 1
Equals!
<强>参考:强>