Naw*_*waz 6 c++ memory-mapping
什么是串行副本?它与深拷贝和浅拷贝不同吗?
根据Duff设备下的wiki条目,它传统上实现为:
do { //count > 0 assumed
*to = *from++; //Note that the 'to' pointer is NOT incremented
} while(--count > 0);
Run Code Online (Sandbox Code Playgroud)
然后它做了一个说明,说
请注意,
to由于Duff正在复制到单个内存映射输出寄存器,因此不会增加.
我真的不明白这个说明.
如果to指针没有递增,那么循环的重点是什么?为什么然后它被实现为:
*to = from[count-1]; //does it not do the same thing?
Run Code Online (Sandbox Code Playgroud)
我怀疑它与串行副本的定义有关.
我们如何分配内存以to使循环产生一些差异?
这种复制的关键在于它不是普通存储器,而是串行寄存器.
因此,每次写入寄存器(to)的地址时,与寄存器相关联的硬件将执行类似于通过串行链路发送位的操作,或者将它们推送到队列以供其他一些硬件处理.
通常,您甚至无法读取这样的寄存器地址,因此它们与正常情况非常不同memory,最好将其视为恰好位于存储器地址的特定硬件接口.
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |