兰陵月 发表于 2017-12-2 14:20:42

关于清空流水线、串行化处理器时jmp操作加不加关键字“dword”的请教

本帖最后由 兰陵月 于 2017-12-2 14:27 编辑

本求助源自于《X86汇编语言-从实模式到保护模式》(李忠等著,第1版)第11章 进入保护模式 第11.7节 清空流水线并串行化处理器(P199)
代码清单位于:http://bbs.fishc.com/thread-100569-1-1.html
这里主要讨论代码第55行:jmp0x0010:flush   ;16位的描述符选择子:32位偏移
先看上下文内容—《X86汇编语言-从实模式到保护模式》P199


——————————————分——割——线———————————————
进行有dword和没dword的编译、执行测试一、不加关键字“dword”,jmp 0x0010:flush的编译结果,如下图:

可以看到标号flush编译后的地址为:0x0000009C。jmp指令编译后的机器码为:EA 10 00,总共5个字节。二、加关键字“dword”,jmp dword 0x0010:flush的编译结果,如下图:

可以看到标号flush编译后的地址为:0x0000009F。jmp指令编译后的机器码为:66 EA 10 00,总共8个字节。
上述两条指令加与不加关键字dword,在虚拟机中最后运行结果都一样,都能正常显示结果。至于一模一样的程序在我的机器上编译之后的地址结果为何与书上不一致?!我也弄不清楚,但程序编译后都能正常执行,并显示与书本上一致的结果。
这是否说明,这个关键字dword可加可不加,效果是否都是一样的呢?


newu 发表于 2017-12-2 14:55:42

虽然不太懂这部分的内容{:10_266:},但加dword和不加dword的差别楼主不是已经分析的很明白了吗{:10_245:}

兰陵月 发表于 2017-12-2 17:06:44

newu 发表于 2017-12-2 14:55
虽然不太懂这部分的内容,但加dword和不加dword的差别楼主不是已经分析的很明白了吗

{:10_266:}想把计算机搞个底朝天{:10_266:}
页: [1]
查看完整版本: 关于清空流水线、串行化处理器时jmp操作加不加关键字“dword”的请教