首页 > 其他 > 详细

32位代码段和16位代码段

时间:2020-01-04 17:32:04      阅读:102      评论:0      收藏:0      [点我收藏+]

其实是对汇编器来说的,像move eax, [0x1000]这条汇编,汇编器需要知道你条指令是让cpu以32位模式运行,还是16位模式运行。

汇编器从而决定是否要加地址宽度前缀。

所以[.bits 16],[.bits 32]这样的汇编指导指令,直接影响nasm生成的代码。

 

另外,cpu的段描述符里有一个标记D,管控的其实是cpu是把一个段当做32还是16位段。

D为1的代码段,默认操作地址是32位宽度而非16位。

D为1的堆栈段,默认使用esp而非sp。

 

0x66是操作码前缀,0x67是地址前缀。

32位代码段和16位代码段

原文:https://www.cnblogs.com/xiang-yin/p/12149574.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!