从主存读入到CPU的指令与操作数都先存在DR中,主要是通过什么区分

liyaobinRyan 2009-07-01 09:20:27
从主存读入到CPU的指令与操作数都先存在DR中,主要是通过什么区分。请高手指教
...全文
131 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Walf_ghoul 2009-07-04
  • 打赏
  • 举报
回复
汇编不会。帮lz顶个吧。。。。
Fleeboy 2009-07-04
  • 打赏
  • 举报
回复
严格意义上来说只有寄存器才叫“内存”,一级缓存、二级缓存...包括我们平时说的内存对CPU来说都是“外存”。
hiboys 2009-07-03
  • 打赏
  • 举报
回复
cpu不存放指令,它直接用硬件单元执行指令。(仅有个ip寄存器指向当前指令地址\或下一行)
可能的操作数放在cpu的寄存器或内存中。
想弄这个学学汇编吧
别逗我乐 2009-07-01
  • 打赏
  • 举报
回复
除了从指令的格式中能 区分指令和操作数

还能从 指令周期中 得到的。
因为 指令和操作数的取得,是在不同的指令周期中
brookmill 2009-07-01
  • 打赏
  • 举报
回复
再举一个例子:
opcode instruction Description
C3 RET Near return to calling procedure
CB RET Far return to calling procedure
C2 iw RET imm16 Near return to calling procedure and pop imm16 bytes from stack
CA iw RET imm16 Far return to calling procedure and pop imm16 bytes from stack

同一条RET指令,有好几种格式。
译码的时候见到操作符C3,就知道这条指令没有操作数。
而如果见到的操作符是C2,就知道应该从某个地方读取一个16位的操作数。
brookmill 2009-07-01
  • 打赏
  • 举报
回复
比如X86的ADD指令,在指令集上有张表:
opcode instruction
04 ib ADD AL, imm8
05 iw ADD AX, imm16
......
见到了操作符04,就知道了这条指令的长度、格式,就可以从某8位找到那个imm8(8位立即数)。
同时也就知道了下一条指令开始的位置。
blh 2009-07-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 liyaobinRyan 的帖子:]
从主存读入到CPU的指令与操作数都先存在DR中,主要是通过什么区分。请高手指教
[/Quote]

不知道你问的是什么? 什么是“从主存读入到CPU的指令”
brookmill 2009-07-01
  • 打赏
  • 举报
回复
严格来说,读进来的都是指令,每一条指令里面又分为操作符(opcode)和操作数两部分,其中操作数部分有可能没有。
一般指令的前面若干位都是操作符,根据操作符就可以知道该指令的格式,然后套用这个格式就知道操作数是那些位。
自己找一本指令集看几条指令就明白了。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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