You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSAPP习题求解:已知机器码与起始地址计算JE分支指令跳转目标

x86-64 je指令跳转目标计算逻辑

核心规则

x86短跳转指令采用PC相对寻址,跳转目标计算公式为:

跳转目标地址 = 当前跳转指令的下一条指令地址 + 指令中存储的偏移量真值

两个值的来源

你提到的两个值本质是同一偏移量的不同表示:

  • 0xF4:是je指令第二字节的原始编码,指令完整机器码为74 F4,其中74是je的操作码,F4是8位补码形式的偏移量
  • -12:是0xF4被解释为8位有符号整数的真值:
    8位有符号数的最高位为符号位,0xF4二进制为11110100,符号位为1表示负数,补码转真值的计算为 0xF4 - 2^8 = 244 - 256 = -12

具体计算过程

  1. 先确定下一条指令地址:当前je指令地址从0x40042f开始,总长度为2字节,因此下一条指令(也就是pop %rbp)的地址为 0x40042f + 2 = 0x400431
  2. 代入公式计算跳转目标:0x400431 + (-12) = 0x400431 - 0xC = 0x400425
  3. 最终je的跳转目标为0x400425

内容的提问来源于stack exchange,提问作者Megan Darcy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:36:02