Mkd1R

一、指令编码(硬编码)的结构

Up to four prefixes of 1 byte each optional:最多有四个前缀指令,每组最多一个字节

二、前缀指令的分组

LOCK和REPEAT前缀指令

  1. LOCK F0
    (锁地址总线)如果再汇编指令中加上 LOCK ,当前这个地址,在多个CPU执行的时,某个时刻只能有一个核CPU能读这个地址(在多核下才有意义)
  2. REPNE/REPNZ F2
    重复执行后面的某一个指令(ZF标志位为0时执行)
  3. REP/REPZ F3
    重复执行后面的某一个指令(ZF标志位为0时执行)

段前缀指令(明确告诉CPU使用哪个段,ESP/EBP默认使用SS段寄存器,默认全局地址使用DS段寄存器)

  1. CS(2E)(CS寄存器中有个db位决定着CPU是32(为1)位状态还是16(为0)位状态)
  2. SS(36)
  3. DS(3E)
  4. ES(26)
  5. FS(64)
  6. GS(65)

操作数宽度前缀指令

  1. 66
    改变操作数的默认宽度32(EBP)->16(BP),反之一样

地址宽度前缀指令

  1. 67
    改变寻址方式(32位与16位的寻址方式不同)
    32位:MOV DWORD PTR SS:[EBP-18],ESP
    16位:MOV DWORD PTR DS:[DI+FFE8],ESP

三、总结

前缀指令没有顺序要求,直接在最前面添加需要的指令即可,最少0个最多四个,每组最多使用一个,同时,原本是32位寻址,加上67就是16位寻址,反之亦然,66也是如此

相关文章:

  • 2022-12-23
  • 2021-06-12
  • 2021-12-16
  • 2021-04-29
  • 2022-12-23
  • 2022-12-23
  • 2021-12-18
  • 2021-09-23
猜你喜欢
  • 2021-12-28
  • 2022-01-26
  • 2021-12-04
  • 2021-09-26
  • 2021-03-28
  • 2022-12-23
  • 2021-11-29
相关资源
相似解决方案