能力值:
( LV13,RANK:350 )
|
-
-
2 楼
这个是关系到CPU的实现细节了,至于CPU为什么没有这样的实现那我也不是很清楚了
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
这个不好说,上网搜一下比较现实
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
貌似在那里看到过的,说是和intel的CPU指令有关系
真的想知道那就去intel网站上找找CPU相关的电子资料好了
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
你知道该怎么用就行了,
比如 mov eax,0
两个操作数必须有一个是寄存器
mov data,eax / mov ebx,eax /mov ebx,[ebx] /mov [1234],eax
都是可行的
但 mov data,data1 / mov [eax],[ebx] /mov [eax],0
都是错误的
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
这是跟cpu设计原理有关的。
CPU不能直接在内存里进行计算;
寄存器是比内存更快的数据存放处。
|
能力值:
( LV9,RANK:370 )
|
-
-
7 楼
指令编码的设计原因:
你可以看看下面的指令格式:
Intel只给了编码一个内存寻址操作数的位置。
至于更深层次的原因,可能就跟处理器的设计有关了。
|
能力值:
(RANK:210 )
|
-
-
8 楼
内存寻址需要把地址装入专门的地址寄存器,类似于ALU,因为是在同一个总线上的,如果两个间接寻址的话,就要装载两次地址,而一般处理指令都是并行处理的,这第二次寻址前什么都做不了,浪费了一个周期,所以决定每个指令只能进行一次间接寻址.
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
学习了,但是还是看不懂.
|
能力值:
(RANK:300 )
|
-
-
10 楼
就是说 运算的两个数不能都放在内存里面。
|
能力值:
( LV9,RANK:170 )
|
-
-
11 楼
指令集的设计是一个原因:modrm 寻址中没有提供 mem 对 mem 编码
另一个原因,正如 8 楼所说的,所有的内存操作都要放在 CPU 的 load-store 队列里,一条指令有两种内存操作数的话,同步是一个问题,即使使用 lock 锁总线,指令也会出现混乱。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
是不好懂,只要记住不可以就行了不一定非要理解它。。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
mov [eax],[ebx] 一句指令说明一切。
|
能力值:
( LV9,RANK:260 )
|
-
-
14 楼
to 菜鸟乱飞:
我的理解是源和目的必须有一个指定以字节、字还是双字操作,比如说mov [eax],[ebx],你根本不知道从ebx地址上转移了一个字节、两个字节还是四个字节到eax指示的地址上;而mov byte ptr [eax],[ebx]则明确指示出移动一个字节。
|
|
|