寄存器的地址与内存地址

LubinLew 2013-06-19 10:49:44
寄存器是有地址的这是没有异议的吧。
那么寄存器的地址是相对于CPU而言的吗?CPU中有一套自己的地址机制吗?

通常说的地址一般指的地内存地址。
如果往一个地址中写数据,那么CPU怎么识别是写寄存器还是写内存呢?

...全文
923 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-06-20
  • 打赏
  • 举报
回复
在CPU内部,可以将寄存器看作有地址(试比较MOV EAX,10和MOV ECX,10这两条汇编指令对应字节的各二进制位的值),只不过这个地址和RAM内存地址是两回事而已。
ForestDB 2013-06-19
  • 打赏
  • 举报
回复
比如下面的单片机的地寄存器定义, 0x8n是什么? 堆栈指针; sfr DPL = 0x82; 数据指针低8位 sfr DPH = 0x83; 数据指针高8位 sfr PCON = 0x87; 电源控制 sfr TCON = 0x88; 定时器/计数器控制 sfr TMOD = 0x89; 这部分断行是不是有点问题? 应该是这样? sfr DPL = 0x82; 数据指针低8位 sfr DPH = 0x83; 数据指针高8位 sfr PCON = 0x87; 电源控制 sfr TCON = 0x88; 定时器/计数器控制 另外我们所说的寄存器无地址指的是CPU的寄存器,即ah,al这些通用寄存器,明显和LZ所说的不是同一种
  • 打赏
  • 举报
回复
从没有想过这个问题,看来我得加强计算机体系方面的理论学习了
橡木疙瘩 2013-06-19
  • 打赏
  • 举报
回复
从某种意义上来说,寄存器确实是有地址的,不过它们的地址不是一个完整的字节,而只是几个二进制位。 ADD EBX, 1 ADD ECX, 1 这两条语句生成的代码肯定不同,那么不同之处自然就是寄存器的地址。 不过计算机不需要去判断地址是寄存器还是内存,因为操作寄存器与操作内存的代码是不一样的。
LubinLew 2013-06-19
  • 打赏
  • 举报
回复
引用 2 楼 ForestDB 的回复:
寄存器是有地址的这是没有异议的吧。 有异议 谁告诉你的? 还是自己想的? 如果可能,学习下简单的数字电路。
比如下面的单片机的地寄存器定义, 0x8n是什么? 堆栈指针; sfr DPL = 0x82; 数据指针低8位 sfr DPH = 0x83; 数据指针高8位 sfr PCON = 0x87; 电源控制 sfr TCON = 0x88; 定时器/计数器控制 sfr TMOD = 0x89;
ForestDB 2013-06-19
  • 打赏
  • 举报
回复
寄存器是有地址的这是没有异议的吧。 有异议 谁告诉你的? 还是自己想的? 如果可能,学习下简单的数字电路。
baichi4141 2013-06-19
  • 打赏
  • 举报
回复
我承认我第一次听说“寄存器是有地址的”,所以提不出什么异议

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧