书上说根据CS:IP来读取指令,但是怎么知道要取多少个字节呢?指令有长有短啊

imur2008 2009-02-11 02:14:56
书上说根据CS:IP来读取指令,但是怎么知道要取多少个字节呢?指令有长有短啊

谢谢先
...全文
381 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahalf 2009-02-11
  • 打赏
  • 举报
回复
取指会一次取多个字节
存入指令缓存
解码后才知道指令有多长
cnzdgs 2009-02-11
  • 打赏
  • 举报
回复
可以理解为:先取一字节,对其解码,根据这一字节可以判断出指令码是否多于一字节,如果是,则再取下一字节……
liux945 2009-02-11
  • 打赏
  • 举报
回复
指令长度是不等长的,需要查表(80X86 OPCODES)才知道.
CPU在取指的时候,它会自动辨别指令的长度的

cpu根据cs ip就能从内存中读取一条指令出来,说简单了是根据一个规则读取出来的,这个规则是死的,有兴趣可以了解一下。
一条汇编指令->机器码->cpu读取。
liuqizealot 2009-02-11
  • 打赏
  • 举报
回复
操作系统是直接将程序读入内存
CS:IP是用来执行指令,不是读取指令
IP的值是下一条指令的偏移
每条指令都是形如 XX YY...YY 的一段数据 XX决定是什么指令 他总是1字节长(除非在16段下用32位指令,或反之),XX决定了 YY...YY 的长度也决定了
imur2008 2009-02-11
  • 打赏
  • 举报
回复
结贴致谢!
BAYNPU 2009-02-11
  • 打赏
  • 举报
回复
每一个指令都有固定的二进制格式.
xiaopoy 2009-02-11
  • 打赏
  • 举报
回复
搜索opcode的资料,推荐老罗那简明的一系列。
达摩克利斯 2009-02-11
  • 打赏
  • 举报
回复
如果是人读,建议将指令copy到某个反汇编器中看,可以知道指令的长短。
如果是程序,这个是Intel或者AMD的处理器自身具有的功能,取指,解码。这些处理器当然知道自己的指令编码的格式了。和反汇编软件干的事差不多。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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