linux下面的汇编问题

terryc 2002-11-27 05:11:33
进入保护模式以后
.align 4

movw $0x00 , %ax(8B1800)
movw %ax , %es (8e**)
为什么在linux下面编译出来,两句话合并成一句(668B18008e**)
我一直觉得这是编译器的问题,66是前缀,表示8B后面是 32位
高手回答
...全文
25 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
terryc 2002-11-28
  • 打赏
  • 举报
回复
有没有优化我不知道,反正是用gas编译,然后gcc的,66是表示8B后面跟着的操作数是32为的
相当于mov 32 ,32reg了,可是我的语句只是要求把0000h写到ax里面,他自动给我变成8e**0000写到eax里面了,语句就有错了
xuanyuanhaobo 2002-11-27
  • 打赏
  • 举报
回复
我认为是66是表示包括他本身共32位!!

这样就没问题了!!
bnwxf 2002-11-27
  • 打赏
  • 举报
回复
时不是优化过了?

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧