用C语言arm输出指令,虚拟机之ARM上mov指令C语言实现

以下代码是虚拟机源码上摘录下来希望对正在学ARM指令的朋友有帮助,接下来会把ARM的指令都用C语言整理下上传。

void i_mov() {  uint32_t icode = ICODE;  uint32_t S;  uint32_t cpsr;  uint32_t Rd;  int rd;    if(!check_condition(icode)) {   return;  }    rd = (icode >> 12)&0xf;  cpsr=REG_CPSR;  cpsr&= ~(FLAG_N | FLAG_Z | FLAG_C);  cpsr |= get_data_processing_operand(icode);   Rd = AM_SCRATCH1;  dbgprintf("MOV value %08x to reg %d \n",Rd,rd);  ARM9_WriteReg(Rd,rd);  S=testbit(20,icode);    if(S) {   if(rd==15) {    if(MODE_HAS_SPSR) {     SET_REG_CPSR(REG_SPSR);    } else {     fprintf(stderr,"Mode has no spsr in line %d pc %08x icode %08x\n",__LINE__,ARM_GET_NNIA,icode);    }   } else {     if(!Rd) {     cpsr |= FLAG_Z;    }    if(ISNEG(Rd)) {     cpsr |= FLAG_N;    }    REG_CPSR=cpsr;   }  } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值