Assembly “装配说明”在哪里;英特尔集团;类别起源?
在开发86-DOS应用程序的fork时,我遇到了被称为“英特尔组”的指令类别。具体而言,组是指与使用相同的1或2个操作码字节的一组指令相关的内容,由ModR/M字节的Assembly “装配说明”在哪里;英特尔集团;类别起源?,assembly,x86,intel,x86-16,machine-code,Assembly,X86,Intel,X86 16,Machine Code,在开发86-DOS应用程序的fork时,我遇到了被称为“英特尔组”的指令类别。具体而言,组是指与使用相同的1或2个操作码字节的一组指令相关的内容,由ModR/M字节的/r字段区分 “英特尔集团”类别可以追溯到1997年发布的FreeDOS Debug 0.95,可以看到: 我找不到关于“英特尔集团”分类的任何信息。像这样精确的网络搜索只能找到同一应用程序的回购协议。更广泛的搜索不会显示与这些评论中的用法相匹配的任何内容 在我读过的英特尔手册中,我从来没有发现过任何“组”类别。例如,似乎没有在其指
/r
字段区分
“英特尔集团”类别可以追溯到1997年发布的FreeDOS Debug 0.95,可以看到:
我找不到关于“英特尔集团”分类的任何信息。像这样精确的网络搜索只能找到同一应用程序的回购协议。更广泛的搜索不会显示与这些评论中的用法相匹配的任何内容
在我读过的英特尔手册中,我从来没有发现过任何“组”类别。例如,似乎没有在其指令集引用中列出组。使用相同的分组。英特尔手册也是如此(请参阅《英特尔软件开发人员手册》第2D卷中的Tbl.A-6)。我的1993年版Intel486™ 微处理器系列程序员参考手册在A-3页开始的操作码图中显示了这些组,包括组8。同样,1990年的386™ DX程序员参考手册,也从A-3页开始。@njuffa:事实上,我显示的链接也包含A-4页(PDF第784页)上的操作码图。这些组称为“GrpX”。组9添加在1995年《奔腾系列开发人员手册》第3卷:体系结构和编程手册A-9页中,当时仅包含
CMPXCH 8BMq
指令。我在80286手册中找不到任何提及的组,因此推测“组”概念是在386中引入的,即32位体系结构。这些组一直在手册的附录A中—查看,它有组1-17
/*
* 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) */