gcc 内嵌汇编的学习笔记 II
--一个简单的条件判断
作者:ShellEx.
ShellEx.cn && blog.youkuaiyun.com/shellex 版权所有
真不好意思,用高级语言的想法类比汇编。毕竟是学高级语言出来
的其实就是对指令的学习了。结合汇编出来的代码,条件判断使用了cmp
指令。cmp的结果放在某个地方...(-_-b),貌似是虾米标志位...
具体哪个地方还得参考下书本。
下面是我写的内嵌汇编代码
#include <stdio.h>
int main() {
int in1 = 0, in2 = 0, out =0;
printf("PLZ input 2 Number like this: (x1 , x2) /n");
scanf("%d , %d", &in1, &in2);
asm volatile(
"nop /n/t"
"cmp %2, %1/n/t" //比较in1 和 in2
"jne FAIL/n/t" //如果不等,跳到FAIL
"movl $1, %0/n/t" //给out赋值为1
"jmp END_LABEL/n" //跳到结尾
"FAIL: /n/t" //FAIL标号
"movl $0, %0/n" //给out赋值为0
"END_LABEL:/n/t" //结尾标号
:"+r"(out)
:"r"(in1),"r"(in2)
:"ebx" //用到ebx,所以告诉gcc表再用它
);
printf("out = %d",out);
return 0;
}
///////////////////////////////////////////////////////////////
shellex.cn && blog.youkuaiyun.com/shellex 版权所有
本文通过一个简单的条件判断示例介绍了GCC内嵌汇编的基本用法。示例中利用了cmp指令进行数值比较,并根据比较结果决定不同的执行路径。文章提供了完整的代码示例,演示了如何使用内嵌汇编实现条件分支。
7万+

被折叠的 条评论
为什么被折叠?



