- 打卡等级:以坛为家I
- 打卡总天数:312
- 最近打卡:2025-03-11 13:20:13
荣誉版主
- 积分
- 5395
|
发表于 2023-1-16 10:08:12
|
显示全部楼层
51的 DPTR单指针对 外部 XDATA寻址, 功能很弱, 代码消耗大, 后来改进的双数据指针, 也是个鸡肋, 要很小心的使用, 否则极易出错.
51是早期构架, 你硬要把晚期的先进构架 ARM的那一套, 用在 51上, 代码长度大大增加, 执行效率极速降低.
理论上部分能实现, 但现实中走不通. 这是由 51的构架决定的, 早期的数据处理量相对少, 51主要依靠 片内RAM来处理, 片外 XRAM 仅作数据缓冲及数据保存.
像 BIT位操作(含I/O操作), 是世界上仅存的, 也是 51最强大最亮眼的地方, 你把她去掉, 用其他没有位处理器的CPU(比如 ARM) 风格取代, 代码增加好多不说,
执行效率低很多. 那还不如直接把 51扔到历史的长河里去算了.
因为 51的构架, 决定的片外 XRAM操作, 比不上同等级别的 8080(Z80)系, 6800(6502)系, 指令系统除了 位处理器是亮点, 其他没什么优势, 那还要她干嘛?
后来 英特尔升级的 251, 这方便作了很大的改进, 这构架在当时也算 先进的, 放在现在 和 后期的 ARM相比, 当然没法比, 像 ARM的 桶式处理, 移位和加法,
一条指令打天下, 而 251要好多条指令, 才能模拟此功能.
至于官方仿 ARM风格的库, 大量使用指针间接操作, 代码长度长执行效率低, 正如官方自已存认的, 作用不大.
但官方仿 ARM风格的库, 用在 251(STC32)上, 用户体验就在不一样了, 251的间接寻址功能, 比原 51要强大的多了, 无论代码长度长执行效率,
都逼近直接用 汇编编写的代码, 我相信, 喜欢使用的客户也会多起来.
|
|