gcc 内嵌汇编的学习笔记 II

来源:互联网 发布:知行网络 编辑:程序博客网 时间:2024/06/05 10:37

                  gcc 内嵌汇编的学习笔记 II
                                    --一个简单的条件判断
  作者:ShellEx. 
  ShellEx.cn && blog.csdn.net/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.csdn.net/shellex 版权所有