1.“寄存器是与机器硬件密切相关的,不同类型的计算机,寄存器的数目是不一样的,通常为2到3个,对于在一个函数中说明的多于2到3个的寄存器变量,C编译程序会自动地将寄存器变量变为自动变量。”
這是引用百度百科的一段話,我無法理解爲什麽寄存器只有2-3個 寄存器不是有ax bx cx bp等等這麼多嗎
2.我以前學習C語言的時候用到過寄存器變量 如 register int p;请问这个变量存储在哪个寄存器
------解决方案--------------------
1.不会只有2-3个吧
拿32位Intel CPU来说,含有的寄存器:
4个数据寄存器(EAX、EBX、ECX和EDX)
2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)
6个段寄存器(ES、CS、SS、DS、FS和GS)
1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)
2.register int p;
只是对编译器优化的一个建议,这种建议的取舍则由编译器决定。