嵌入式汇编和机器码的反汇编

以下程序是0.11 Linux中的一段嵌入式汇编代码

#define __set_tssldt_desc(n, addr, type) \
__asm__ ("movw $104, %1\n\t" \
         "movw %%ax, %2\n\t" \
         "rorl $16, %%eax\n\t" \
         "movb %%al, %3\n\t" \
         "movb $"type ", %4\n\t" \
         "movb $0x00, %5\n\t" \
         "movb %%ah, %6\n\t" \
         "rorl $16, %%eax" \
         :
         :"a"(addr), "m"(*(n)), "m"(*(n+2)), "m"(*(n+4)), \
          "m"(*(n+5)), "m"(*(n+6)), "m"(*(n+7)) \
        )

我在用bochs 2.1.1版本debug的过程中,看到这段代码对应的实际执行的机器码及其反汇编代码如下:

000072c4: (                    ): mov dword ptr ss:[ebp+0xfffffffc], 0x1847c ; c745fc7c840100
000072cb: (                    ): mov eax, dword ptr ss:[ebp+0xfffffffc] ; 8b45fc
000072ce: (                    ): opsize mov word ptr [ds:0x5cd8], 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值