2019-03-23 17:50发布
okwh 发表于 2017-1-26 15:24 书上 更多为编译器、为人那一端设计。 嵌入这一端,基本上只用最有效最基本的数据结构-通常只有最基本 ...
白丁 发表于 2017-1-26 21:34 51是八位机,怎么会有字节对齐的问题呢,这些都是说的32位机了
大家都是好朋友 发表于 2017-1-26 15:45 比如字节对齐,我C语言没见过,51汇编也没见过。 它是伪代码吧?
大家都是好朋友 发表于 2017-1-26 15:47 还有C程序说不能直接给变量赋地址 但我看这个单片机的程序,需要给某个寄存器赋值,就DEFINE 定义它的地 ...
最多设置5个标签!
还有C程序说不能直接给变量赋地址
但我看这个单片机的程序,需要给某个寄存器赋值,就DEFINE 定义它的地址,然后指针指向它。。。
对呀 我是说以前学的都没见过这个
51是8位,本身就是字节对齐的,也只可能是,更多如处理16、24、32位就需要自己编程处理。
32机如ARM正好不一样,32位下有处理8/16/24/32/64等各种可能需要,就有了各种让步平衡取舍。
其实还有直接间接位操作、还有大端小端...... 至于PC机里面如何对齐排列,不让自己管,一切编译器代劳了。
基本原理、宏观结构、细节处理,学习要分层,不然混为一潭,不但容易晕,也让人无法回答。
计算机这种行当相关学习的麻烦之一就是 有时候不知道是学或在学遥控器操作、还是在学电视机内部制造、还是在学单晶硅提炼........
关键不是能不能,而是能否使用、如何使用....
C语言这范围太广了,通常情况下,给变量赋直接数值表达地址,不能使用。但用&转译赋值是可以的,否则,指针怎么用? 一切一切最终让电路执行时都必须落实到地址和内容。
单片机,通常事先就知道所有存储、接口资源的地址和范围多少,当然就可以直接define使用了。而台式机,编译的exe文件采用的相对重定位方法,装入到内存时才确定运行时的地址,所以是无法事先直接用数值指定地址的。
说个比喻: 1 是什么? 铅笔?树枝? 阿拉伯数字? 那么 one , 壹 , I, 日语的 "以其" 音,德语的 “俺斯” .........
把世界上所有语言所有可能的 1 的表达,能全都列出来?又怎么学呢? 那抛开所有表达形式的本质 到底是什么呢?
一周热门 更多>