当前位置: 首页 > news >正文

硬编码(前缀指令)

前缀指令


什么是前缀指令?

在这里插入图片描述

在x86/x64指令架构中,一共有六个部分,其中上图的第一个 Instructino Prefixes 就是对应的前缀指令(前缀指令是可选的不是必须的

cpu如何知道当前指令是否为前缀指令呢?答案是根据当前指令值

在这里插入图片描述
像2e,36,3e这些就是前缀指令,x64dbg已经识别出来给我们用冒号分隔开了(冒号前面的指令就是前缀指令


常见的前缀指令

这些前缀按功能分为四组每组最多只能出现一个前缀(但不同组的前缀可以组合使用,没有顺序要求)

  1. 锁定和重复前缀(Lock & Repeat Prefixes)3个
    • F0H - LOCK (用于原子操作(如XCHG、CMPXCHG),确保指令独占内存访问)
    • F3H - REP/REPE/REPZ(重复字符串操作(如MOVS、STOS),直到ECX=0或ZF=0)
    • F2H - REPNE/REPNZ(重复字符串操作,直到ECX=0或ZF=1)
  2. 段覆盖前缀(Segment Override Prefixes)强制指令使用特定段寄存器 6个
    • 2EH - CS
    • 36H - SS
    • 3EH - DS
    • 26H - ES
    • 64H - FS
    • 65H - GS
  3. 操作数大小覆盖前缀(Operand-Size Override)1个
    • 66H(在16/32位模式下切换操作数宽度(如32位→16位,或64位→32位))
  4. 地址大小覆盖前缀(Address-Size Override)1个
    • 67H(在16/32/64位模式下切换寻址地址大小(如32位→16位,或64位→32位))

其他扩展

  1. REX前缀(64位扩展)
    • 40H–4FH - REX(仅在x86-64下有效,用于扩展寄存器(如R8-R15)或操作数宽度(如64位操作))
    • 结构:0100WRXB(W=64位模式,R/X/B=扩展寄存器位)。
  2. VEX/EVEX前缀(SIMD扩展)
    • VEX(2或3字节)(用于AVX指令(如VADDPS),替代传统66H/F2H/F3H前缀)
    • EVEX(4字节)(用于AVX-512指令,进一步扩展功能)
  3. 分支提示前缀(Branch Hint)
    • 2EH / 3EH(用于Jcc指令,提示静态分支预测(2EH=不跳转,3EH=跳转)

相关文章:

  • 【精选】计算机毕业设计SpringBoot车辆保险理赔平台 保险登记 出险申报 理赔审核进度管理系统源码+论文+PPT+讲解
  • 学习Oracle------Oracle和mysql在SQL 语句上的的异同 (及Oracle在写SQL 语句时的注意事项)
  • Python 标准库之 math 模块
  • ES+索引库文档操作
  • JavaScript 将一个带K-V特征的JSON数组转换为JSON对象
  • Spring Cloud 原生中间件
  • Spring Cloud Alibaba 中间件
  • rt-thread的红外遥控开源库使用(裸机版本)记录.
  • Flutter 与原生技术(Objective-C/Swift,java)的关系
  • 【MFC】编辑框、下拉框、列表控件
  • 位运算详解之异或运算的奇妙操作
  • org.springframework.cloud.openfeign 组件解释
  • Spring Framework 执行链路设计
  • 大模型笔记1:大致了解大模型
  • MLLM常见概念通俗解析(五)
  • 【Redis】Redis的启航之路:Ubantu操作系统下安装Redis
  • ABP vNext 多语言与本地化:动态切换、资源继承与热更新
  • 微信小程序使用图片实现红包雨功能
  • error:MISCONF Redis is configured to save RDB snapshots
  • 计算机网络-自顶向下—第五章数据链路层重点复习笔记
  • 微网站平台微网站建设方案/seo优化交流
  • 福州高端品牌网站建设/网站开发费用
  • 网站设计工作室/东莞建设网
  • 网站建设什么软件好/关键词大全
  • 个人网站注册平台钱/磁力猫引擎入口
  • 做网站花了2万多/批量外链工具