汇编语言中的寄存器是否会不够用,因为高级语言的变量数量不受限制

来源:百度知道 编辑:UC知道 时间:2024/06/03 03:18:08

先分清寄存器的作用.寄存器可以当做数据存储器用,但更多的是为某一专用功能而设计.
先说寄存器的专用功能,它们被用于保留乘除法的结果,用于计数器,用于堆栈......,这时,不存在被当做变量的说法,所以也不用考虑够不够用.
然后,你可能需要用寄存器存储变量,但是计算机还有内存啊,在存储变量方面,寄存器和内存是一样的( 不考虑速度).所以如果寄存器"不够用",你就存到内存啊.但更多的时候你是把寄存器当做传输数据的中间件,这时你的目的是传输数据,你在意的是把数据传到目的地,目的达到了,"中间人"这个大好人,就不用你管了.
这些问题你不用考虑,如果"不够用",事情就非常严重了,Intel早就销声匿迹了.

不会,
因为,高级变量是存放在内存中的,每次要使用的时候,就从内存取出到寄存器。用完之后,如果数据改变了,还要把数据从寄存器保存回内存中。

(其实,CPU的8个通用寄存器也不通用,只有3个寄存器EAX,EBX,EDX是通用的,而其它的寄存器通常都用做其他用途。然而,CPU中远不止8个寄存器,CPU还有,浮点数寄存器,段描述符寄存器,等等,这些是程序可见的寄存器,在某些条件下可以给程序使用,但是CPU还有大量的不可见的寄存器,这些寄存器是CUP内部使用,用来进行流水线,超标量等功能的的实现,我们可以不去管它)

汇编语言每个子程序有一个自己的堆栈空间,所用到的变量没有马上使用时都存在里面,当需要时才传递给有限的寄存器。汇编语言的指令与cpu能运行的指令很接近,基本上每次操作涉及的变量数是有限的,所以电脑的寄存器这时是够用的。一条高级语言的语句可能会被编译器拆分为很多的cpu指令或者汇编指令。

经常会不够用,这时要把寄存器数据送入内存暂存;
程序用到这些数据时,再从内存取出,送回寄存器。

当然会不够用的啊~所以要定义存储空间~定义好的存储空间可以放东西~这样就解除了存储器的限制了~

为什么我就抢不到沙发~- -闷~