在开发 86-DOS 应用程序的分支期间,lDebug https://pushbx.org/ecm/web/#projects-ldebug,我遇到了称为“英特尔组”的指令类别。具体来说,组是指与使用相同 1 或 2 个操作码字节的一组指令相关的东西,通过/r
ModR/M 字节的字段。
“Intel 组”类别可以追溯到 1997 年发布的 FreeDOS Debug 0.95,可以看到在我的 fddebug 存储库的修订版中 https://hg.pushbx.org/ecm/fddebug/file/b237abb3a356/MKTABLES.C#l338:
/*
* 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) */
我找不到任何有关“英特尔集团”分类的信息。精确的网络搜索,例如“英特尔2a组” https://www.google.com/search?q=%22intel+group+2a%22只显示同一应用程序的存储库。更广泛的搜索不会发现任何与这些评论中的用途相匹配的内容。
我也从未在我读过的英特尔手册中找到任何“组”类别。例如,这本 486 手册 http://bitsavers.trailing-edge.com/components/intel/80486/i486_Processor_Programmers_Reference_Manual_1990.pdf似乎没有在其指令集参考中列出组。