ecm*_*ecm 3 x86 assembly intel machine-code x86-16
在开发 86-DOS 应用程序lDebug的分支期间,我遇到了称为“Intel 组”的指令类别。具体来说,组是指与使用相同 1 或 2 个操作码字节的一组指令相关的东西,通过/rModR/M 字节的字段来区分。
“Intel 组”类别可以一直追溯到 1997 年发布的 FreeDOS Debug 0.95,并且可以在我的 fddebug 存储库的修订版中看到:
/*
* 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) */
Run Code Online (Sandbox Code Playgroud)
我找不到任何有关“英特尔集团”分类的信息。像“intel group 2a”这样的精确网络搜索只会出现同一应用程序的存储库。更广泛的搜索不会发现任何与这些评论中的用途相匹配的内容。
我也从未在我读过的英特尔手册中找到任何“组”类别。例如,这本 486 手册似乎没有在其指令集参考中列出组。
我 1980 年出版的《基于 8086 的开发系统的 8086/8087/8088 宏汇编语言参考手册》已经引入了“组”概念,尽管仍然有些不完整。
操作码 80h-83h 和 D0h-D3h 可以链接到命名组“immed”和“Shift”,因为属于该组的指令具有明显的共同特征。
对于操作码 F6h-F7h 和 FEh-FFh 来说情况并非如此,因此他们选择了一种更通用的方法,并为这些组指定了通用名称“Grp”,并带有数字后缀。
大约 6 年后,386 手册再次尝试命名这些现有组,并决定将旧的“Grp 1”重命名为“Unary Grp3”,将旧的“Grp 2”重命名为“间接 Grp5”。添加了几个新组,这些组的异构性质再次使工程师不得不求助于通用命名。
8086
| 操作码 | 团体 | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
|---|---|---|---|---|---|---|---|---|---|
| 80小时-83小时 | 立即 | 添加 | 或者 | 模数转换器 | 瑞士巴塞尔银行 | 和 | 子系统 | 异或 | 化学机械抛光 |
| D0h-D3h | 转移 | 罗尔 | 相对回报率 | RCL | RCR | SHL萨尔 | SHR | - | SAR |
| F6h-F7h | 组1 | 测试 | - | 不是 | NEG | 多线程 | IMUL | DIV | 免疫缺陷病毒 |
| FEh-FFh | 组2 | 有限公司 | 十二月 | 称呼 | 称呼 | 联合管理计划 | 联合管理计划 | 推 | - |
80386
| 操作码 | 团体 | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
|---|---|---|---|---|---|---|---|---|---|
| 80小时-83小时 | 立即组 | 添加 | 或者 | 模数转换器 | 瑞士巴塞尔银行 | 和 | 子系统 | 异或 | 化学机械抛光 |
| C0h-C1h、D0h-D3h | 移位组2 | 罗尔 | 相对回报率 | RCL | RCR | SHL | SHR | SAR | |
| F6h-F7h | 一元组3 | 测试 | 不是 | NEG | 多线程 | IMUL | DIV | 免疫缺陷病毒 | |
| FEh | INC/DEC Grp4 | 有限公司 | 十二月 | ||||||
| FFh | 间接组5 | 有限公司 | 十二月 | 称呼 | 称呼 | 联合管理计划 | 联合管理计划 | 推 | |
| 0Fh,00h | 组6 | SLDT | STR | LLDT | LTR | 维尔罗 | 维沃 | ||
| 0Fh,01h | 组7 | SGDT | SIDT | LGDT | LIDT | 短程短波 | 低分子短波 | ||
| 0Fh,BAh | 组蛋白-8 | BT | 基站 | 贝特瑞 | 比特币 |
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |