无题之1(ASM)


//2d0 3b0 => FF F7 8E EF
//10d4 1284 00ffff92
unsigned int BLX_machine_code_make( unsigned int dstAddr, unsigned int srcAddr )
{
    unsigned int offset,high,low,machineCode;
    offset = dstAddr - srcAddr;
    offset = (offset-4) & 0x007fffff;
    high = offset >> 12;
    low = (offset &  0x00000fff) >> 1;
    if( low%2 != 0x00){
        low++; 
    }
    machineCode = ((0xef00 | low)<<16) | (0xf000 |high);
    return machineCode;
}

unsigned int BL_machine_code_make( unsigned int dstAddr, unsigned int srcAddr )
{
    unsigned int offset, machineCode;

    machineCode = 0xEB000000;     //jump op code
    offset = dstAddr - (srcAddr+8);
    //printf("offset1 = %x\n", offset);
    offset = offset>>2;           //jump offset instruction counts
    //printf("offset2 = %x\n", offset);
    offset = offset & 0x00ffffff;     
    machineCode = machineCode | offset;  
    return machineCode;
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值