一个关于CPU指令系统的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:47:03
举个例子吧,某个指令系统的指令长度为32位,操作码长度为8位,地址长度也为8位,且第一条指令是加,第二条指令是减。当它收到一个00000010 00000100 00000001 00000110”的指令时,先取出它的前8位操作码,即00000010,分析得出这是一个减法操作,有3个地址,分别是两个源操作数地址和一个目的地址。于是,CPU就到内存地址00000100处取出被减数,到00000001处取出减数,送到 ALU中进行减法运算,然后把结果送到00000110处。
这只是一个相当简单化的例子,实际情况要复杂的多。
我想问的是,首先,那个上面例子里的“目的地址”,是个8位的二进制串,他怎么可以标示现在的内存几G那么多,有这么多地址,8位二进制串怎么可以表示这么多地址?如果表示不了,那后面那些内存不就无法被使用了?
还有,两个8位二进制串进行运算,但是,一般变成的时候,一个整形都是32767,根本无法用8位二进制串表示,那整形是怎么表示的?

呵呵,你这上例子太简单了,只是入门课本上讲的吧。实际情况远比这个复杂。而且读内存的话已经用段页式的来读了,不是直接给出这个地址的,所以能支持很大的空间。

建议你去看看C语言的指针这一节,这不是一句两句可以说清楚的。