Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly “装配说明”在哪里;英特尔集团;类别起源?_Assembly_X86_Intel_X86 16_Machine Code - Fatal编程技术网

Assembly “装配说明”在哪里;英特尔集团;类别起源?

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,可以看到: 我找不到关于“英特尔集团”分类的任何信息。像这样精确的网络搜索只能找到同一应用程序的回购协议。更广泛的搜索不会显示与这些评论中的用法相匹配的任何内容 在我读过的英特尔手册中,我从来没有发现过任何“组”类别。例如,似乎没有在其指

在开发86-DOS应用程序的fork时,我遇到了被称为“英特尔组”的指令类别。具体而言,组是指与使用相同的1或2个操作码字节的一组指令相关的内容,由ModR/M字节的
/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) */