历史上的今天
今天是:2025年07月02日(星期三)
2020年07月02日 | ATtiny2313 通用寄存器
2020-07-02 来源:eefocus
寄存器文件针对AVR增强型RISC指令集做了优化。为了获得需要的性能和灵活性,寄存器文件支持以下的输入/ 输出方案:
·输出一个 8 位操作数,输入一个 8 位结果
·输出两个 8 位操作数,输入一个 8 位结果
·输出两个 8 位操作数,输入一个 16 位结果
·输出一个 16 位操作数,输入一个 16 位结果
Figure 4 为CPU 32 个通用工作寄存器的结构。

(点击图片放大)
Figure 4. AVR CPU 通用工作寄存器
大多数操作寄存器文件的指令都可以直接访问所有的寄存器,而且多数这样的指令的执行时间为单个时钟周期。
如Figure 4 所示,每个寄存器都有一个数据内存地址,将他们直接映射到用户数据空间的头32 个地址。虽然寄存器文件的物理实现不是SRAM,这种内存组织方式在访问寄存器方面具有极大的灵活性,因为X、Y、Z 寄存器可以设置为指向任意寄存器的指针。
寄存器R26..R31 除了用作通用寄存器外,还可以作为数据间接寻址用的地址指针。这三个间接寻址寄存器示于Figure 5。

Figure 5. X、Y、Z 寄存器
在不同的寻址模式中,这些地址寄存器可以实现固定偏移量,自动加一和自动减一功能。
具体细节请参见ATtiny2313指令集。
备注:以上所有图片中的地址中“$”更改为“0X”.
上一篇:ATtiny2313 堆栈指针
下一篇:ATtiny2313 状态寄存器
史海拾趣
|
本人想简单修改一下TCPMP播发软件的UI界面,用EVC4.0编译时出现一堆.h找不到,上百个错误.有经验的朋友是否可以指点迷路?说个1,2,3,4.多谢!… 查看全部问答> |
|
我的目标机刷屏很慢,不知道是怎么回事? 基本上是一行一行的刷,等的人心都碎了!请大侠们帮忙! 我用的是VxWorks5.5,Tornado2.2的版本!… 查看全部问答> |
|
wsprintf(sTmp,\"%d.%d.%d.%d\",(IP&0xFF),((IP>>8 ) & 0xFF),((IP>>16) & 0xFF),((IP>>24) & 0xFF)); m_ip_combo_ctrl.AddString(sTmp); 这里出现了两个错误: error C2664: \'wsprintfW\' : cannot convert parameter 1 from \'char [32]\' to ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:29 编辑 在我的ccs2.2中怎么找不到代码剖析工具,无法分析代码执行时间,有谁知道这个东东在那里吗 … 查看全部问答> |




