今天犯傻了,突然想不明白,为啥一个数据cpu能够分辨出来是数据还是地址

来源:互联网 发布:优化管理服务 编辑:程序博客网 时间:2024/04/28 19:55

今天犯傻了,突然想不明白,为啥一个数据cpu能够分辨出来是数据还是地址,为啥还能根据分辨出来的是地址,从地址总线发出,分辨出来的是数据,从数据总线发出。。。好吧,有那么瞬间,我呆掉了~~~~后来想明白了

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

cpu如何区分一个数据,如0x20000300是地址还是数据呢,比如#define  rcon  (*(*0x20000300))
然后  rcon = 234;
此时cpu为什么能判断rcon是地址,然后将对应的位从地址总线发出,能判断234是数据位,从数据总线发出
c编译器编译的时候,会经历一步翻译成汇编语言的过程,比如rcon = 234这句会翻译成ldr r1,0x200000,然后,ldr [r1],234,编译器将C代码这样翻译之后,r1发出去的时候,是使用 寻址来发的,而寻址指令是硬件指令集,是从硬件电路得到的,那样译码的时候,电路里面对应的地址数据复用引脚会进行相应的选择,相应的内部门电路啥的就会变,数据最终从地址引脚发出。

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

原创粉丝点击