x86汇编指令“Intel group”分类的起源是哪里?
x86「Intel group」指令分类的起源说明
- 首先可以明确:不存在对应的英特尔官方公开定义,该分类是FreeDOS Debug项目的内部约定命名,从未出现在任何英特尔官方发布的处理器编程手册中。
- 该分类的最早可追溯记录为1997年发布的FreeDOS Debug 0.95版本源码,开发者设计这套分类的目的是规整x86指令集里共享1-2字节相同操作码、通过ModR/M字节的
/r字段区分具体指令的集合,前缀加「Intel」仅表示该分类的底层规则基于英特尔x86的指令编码规范,不代表是英特尔官方推出的分类。 - 这套命名仅在FreeDOS Debug衍生项目生态内流传:lDebug等工具都是基于FreeDOS Debug的代码分支迭代开发,所以沿用了这套内部命名。检索相关关键词仅能找到同系列项目的内容,也证明该分类从未被官方或其他第三方广泛采纳。
你提到的分组定义就是该项目当年的内部表实现,代码如下:
/* * Here are the tables for the main processor groups. */ struct { int seq; /* sequence number of the group */ int info; /* which group number it is */ } grouptab[] = { {0x80, GROUP(1)}, /* Intel group 1 */ {0x81, GROUP(1)}, {0x83, GROUP(2)}, {0xd0, GROUP(3)}, /* Intel group 2 */ {0xd1, GROUP(3)}, {0xd2, GROUP(4)}, {0xd3, GROUP(4)}, {0xc0, GROUP(5)}, /* Intel group 2a */ {0xc1, GROUP(5)}, {0xf6, GROUP(6)}, /* Intel group 3 */ {0xf7, GROUP(6)}, {0xff, GROUP(7)}, /* Intel group 5 */ {SPARSE_BASE + 0x00, GROUP(8)}, /* Intel group 6 */ {SPARSE_BASE + 0x01, GROUP(9)}}; /* Intel group 7 */ /* #define NGROUPS 9 (this was done above) */ struct { /* sparse groups */ int seq; /* sequence number of the group */ int info; /* which group number it is */ } sp_grouptab[] = { {0xfe, SGROUP(1)}, /* Intel group 4 */ {SPARSE_BASE+0xba, SGROUP(2)}, /* Intel group 8 */ {SPARSE_BASE+0xc7, SGROUP(3)}, /* Intel group 9 */ {0x8f, SGROUP(4)}, /* Not an Intel group */ {0xc6, SGROUP(5)}, /* Not an Intel group */ {0xc7, SGROUP(5)}}; /* #define NSGROUPS 5 (this was done above) */
内容的提问来源于stack exchange,提问作者ecm
相关产品推荐
相关产品推荐

