摘要: 所有内容均翻译自 Intel CPU 手册,再经过整理,难免有误,见谅。 系统设计可以根据是否采用CPU提供的分段机制来分类:平坦模型和多段模型。 像Windows这些操作系统采用的是平坦模型。 平坦模型 - 对于基本平坦模型,操作系统和应用程序可以访问一个连续的、没有分段的地址空间。 - 实现基本 阅读全文
posted @ 2021-10-31 18:05 HyperVS 阅读(132) 评论(0) 推荐(0)
摘要: #include <windows.h> int main() { DWORD dwKernel32 = 0; _asm { mov eax, fs:[0x30] // peb mov eax, [eax+0x0C] // ldr mov eax, [eax+0x1C] // Module List 阅读全文
posted @ 2021-10-31 16:33 HyperVS 阅读(175) 评论(0) 推荐(0)
摘要: - 条件较多或满足条件概率高的语句靠前,if-else 比 switch 效率高。 - 条件较多或满足条件概率高的语句靠后,switch 比 if-else 效率高。 - 条件较少的情况下,编译器不会做任何优化(不优化比优化好),switch 底层汇编会出现 "cmp" 比较,效率和 if-else 阅读全文
posted @ 2021-09-16 20:18 HyperVS 阅读(351) 评论(0) 推荐(0)
摘要: CBinTree.hpp 1 #include <iostream> 2 #include <queue> 3 #include <stack> 4 5 template <typename T> 6 class BinTree 7 { 8 private: 9 // 树节点 10 typedef 阅读全文
posted @ 2021-09-10 14:34 HyperVS 阅读(221) 评论(0) 推荐(0)
摘要: add dword [eax+ebx*8+0x3C00], edx: 1. 找到对应指令和操作码: Opcode=01 # /r:表示指令的ModR/M中包含一个寄存器操作数和一个R/M操作数。 2. 查看ModR/M寻址方式表: # [--][--]:表示ModR/M后有SIB。 # ModR/M 阅读全文
posted @ 2021-09-08 12:24 HyperVS 阅读(278) 评论(0) 推荐(0)
摘要: mov word [bx+si+3], 0xAA55: 1. 找到对应指令和操作码: Opcode=C7 ModR/M.Reg/Opcode=000 # /digit:digit是0~7间的数字。将其转换成二进制对应于ModR/M中的Reg/Opcode字段。 # iw:表示指令中的立即数是2字节。 阅读全文
posted @ 2021-09-08 12:23 HyperVS 阅读(227) 评论(0) 推荐(0)
摘要: mov al, cl: 1. 找到对应指令和操作码: Opcode=88 # /r:表示指令的ModR/M中包含一个寄存器操作数和一个R/M操作数。 2. 查看ModR/M寻址方式表: # ModR/M.Mod=11 # ModR/M.Reg/Opcode=001 # ModR/M.R/M=000 阅读全文
posted @ 2021-09-08 12:23 HyperVS 阅读(221) 评论(0) 推荐(0)
摘要: mov cl, 3: 1. 找到对应指令和操作码: Opcode=B0+rb # +rb:表示操作码的低3位用于在不需要ModR/M的情况下编码寄存器操作数。 # ib:表示指令中的立即数是1字节。 2. 由于Opcode需要'+rb',找到cl寄存器的编号: 寄存器编号=1 Opcode=B0+1 阅读全文
posted @ 2021-09-08 12:23 HyperVS 阅读(489) 评论(0) 推荐(0)
摘要: ModR/M: # Mod & R/M:Mod字段与R/M字段组合形成寻址模式。 # Reg/Opcode:寄存器编号或操作码的扩展。 SIB: # Scale:比例因子# Index:索引寄存器的寄存器编号# Base:基址寄存器的寄存器编号 ModR/M 寻址方式表: 16bits 32bits 阅读全文
posted @ 2021-09-08 12:22 HyperVS 阅读(349) 评论(0) 推荐(0)
摘要: 指令前缀分为4组: 1. 锁定和重复前缀 2. 段超越前缀、分支提示前缀 3. 操作数尺寸反转前缀 4. 有效地址尺寸反转前缀 锁定和重复前缀: F0H-LOCK F2H-REPNE/REPNZ F3H-REP/REPE/REPZ 段超越前缀: 2EH-CS 36H-SS 3EH-DS 26H-ES 阅读全文
posted @ 2021-09-08 08:44 HyperVS 阅读(341) 评论(0) 推荐(0)