微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

汇编指令“英特尔组”类别源自何处?

如何解决汇编指令“英特尔组”类别源自何处?

在开发 86-DOS 应用程序 lDebug 的分支期间,我遇到了称为“Intel 组”的指令类别。具体来说,组是指与使用相同的 1 或 2 个操作码字节的一组指令相关的内容,由 ModR/M 字节的 /r 字段区分。

“Intel group”类别可以追溯到 1997 年发布的 FreeDOS Debug 0.95,可以看到 in that revision of my fddebug repo

/*
 *  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,{0x83,GROUP(2)},{0xd0,GROUP(3)},/* Intel group 2 */
        {0xd1,{0xd2,GROUP(4)},{0xd3,{0xc0,GROUP(5)},/* Intel group 2a */
        {0xc1,{0xf6,GROUP(6)},/* Intel group 3 */
        {0xf7,{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) */

我找不到有关“英特尔集团”分类的任何信息。像 "intel group 2a" 这样的精确网络搜索只会找到相同应用程序的存储库。更广泛的搜索不会在这评论中找到与使用匹配的任何内容

我也从未在我阅读过的英特尔手册中找到任何“组”类别。例如,this 486 manual 似乎没有在其指令集参考中列出组。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。