以下是引用zhu224039在2012-9-30 19:06:52的发言:
C语言是针对内存操作的一种语言
所有的操作数,运算,中间结果,结果 都 是在内存上进行的
并不不包含寄存器操作的过程描述,是被封装起来了的
比如ADD AX,AX
C语言里的描述是 a=b+b
a和b都是变量的地址的引用标示符 代表地址a,b 的内容
a=b+b的 执行过程就是
mov ax,b
mov bx,b
add ax,bx
mov a,ax
是不是这样的呢? 请教
C语言是针对内存操作的一种语言
冯 诺依曼 体现也就是我们现在用的计算机的体系 核心就是存储指令等东西 所以 所有的东西都可以认为是是在内存中进行的 指令是这样数据也是这样 反例是CPU寄存器 高速缓冲存储器等东西 但除了寄存器可以操作之外 高速缓存等都不是编程控制的 所以 能直接控制的也就是少得可怜的寄存器和相对较多的内存了 硬盘属于外存储器 对其中内容的控制不是直接的
所有的操作数,运算,中间结果,结果 都 是在内存上进行的
对于不优化的时候 是这样 但一般的代码都是优化的 所谓的优化就是能多快就多快 如果需要 肯定是放寄存器
并不不包含寄存器操作的过程描述,是被封装起来了的
也不是完全不行 可能的途径有两个 一个是内联汇编 这个的话 32位的编译器大部分支持 但64位的支持情况不同 貌似微软的64位编译器不大支持罢 还有个是一些寄存器控制宏 但这个是由编译器提供的 所以各个编译器不大一样 貌似intel也有一个相对通用的东西 但不是特别好使..