gcc 内嵌汇编的学习笔记 III

           gcc 内嵌汇编的学习笔记 III
                                     --一个loop
  作者:ShellEx. 
  ShellEx.cn && blog.csdn.net/shellex 版权所有
 我又来了。今天实现的是类似While(...){...}的一个loop。对于不
支持高级语法(.if之流)的GNU gcc汇编器--也就是GAS--来说,写条件判
断和循环要略微麻烦呢。
#include <stdio.h>
int main() {
 int in = 0, out =0, i = 0 ;
 printf("PLZ input a Number: /n");
 scanf("%d", &in);

 asm volatile(
  "nop  #LoopTest/n"  
  "L_BEG:   /n/t" //起始标志位
  "cmp  %2, %1  /n/t" //比较in 和 i (放在寄存器中)的值
  "jge  L_END  /n/t" //i 比in 大就跳出
  "addl  $2, %0  /n/t" //否则out+=2
  "incl  %1   /n/t" //i自增  
  "jmp  L_BEG  /n"  //跳回起始 位置  
  "L_END:   /n/t" //结束标志
  :"+r"(out),"+r"(i)
  :"r"(in)
  :
 );
 printf("out = %d",out);
 return 0;
}
///
没有难度,就仅仅是比较和跳转,相当于下列C++ code :
while (i < in) {
 out += 2;
 ++i;
}
shellex.cn && blog.csdn.net/shellex 版权所有 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值