注册 登录
编程论坛 汇编论坛

突然间来了感觉!!!!

zhu224039 发布于 2012-09-30 19:06, 474 次点击
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

是不是这样的呢? 请教

6 回复
#2
有容就大2012-09-30 19:36
貌似一个寄存器就能实现吧
mov ax, b
add ax, b
mov a, ax

#3
zklhp2012-09-30 19:44
以下是引用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也有一个相对通用的东西 但不是特别好使..
#4
有容就大2012-09-30 19:58
回复 3楼 zklhp
学习。。。
感觉每个内存单元都有一个地址 如果没有寄存器 CPU怎么取得地址呢? 没有地址什么都做不了吧。
#5
zklhp2012-09-30 20:26
明天要搬砖 睡觉前再多说一句

有感觉有想法是好事 但如果想的不对就不好了 所以 有想法帖出来大家聊聊是很好的

顺便祝楼主学习顺利 早日成功
#6
zhu2240392012-10-01 02:01
回复 4楼 有容就大
木有地址可以做事情的哟,CPU 寄存器 嘿嘿
#7
hu9jj2012-10-01 21:41
这样有可比性吗?
1