作者 主题:Padauk:当8位可以寻址整个RAM时,为什么要使用16位指针? (Read 422 times)

名义动物, 机电一体化 和3位客人正在查看此主题。

离线 面食俱乐部

  • 新手
  • 帖子:3
  • 国家: 日
Padauk微控制器使用16位指针(字)有什么充分的理由吗?

显然,Padauk过去制造过8核芯片……不确定它们是否具有更多的RAM。但是,当前所有芯片都具有80到256字节的RAM,因此您不必'需要8位以上的地址来寻址任何存储器位置。数据表甚至指出,为了增加指针,您可以简单地增加低有效字节并保存一条指令。那为什么首先需要一个更高的字节呢?
 

离线 Circlotron

  • 超级贡献者
  • ***
  • 帖子:2170
  • 国家: au
回复:帕达克:为什么8位可以寻址整个RAM时为什么使用16位指针?
« 在以下方面回复#1: 昨天 在上午11:52:50»
Not familiar with 日ese micros, but is IO, flash, and various config 寄存器s also part of 日e addressable memory? 那 could easily total way more 日an 256 bytes
« 最后编辑: 昨天 在Circlotron在12:55:09 pm »
 

离线 mikerj

  • 超级贡献者
  • ***
  • 帖子:2594
  • 国家: b
回复:帕达克:为什么8位可以寻址整个RAM时为什么使用16位指针?
« 在以下问题上回复#2: 昨天 在12:24:05 pm»
如上所述,它's because RAM不是't 日e only 日ing 您 might want to access via a pointer. 用于12/14位内核的旧HTSoft PIC C编译器具有8位和16位指针,8位用于仅访问RAM或SFR,同时节省了内存和周期,还有16位可以访问任何内容。
 

离线 面食俱乐部

  • 新手
  • 帖子:3
  • 国家: 日
回复:帕达克:为什么8位可以寻址整个RAM时为什么使用16位指针?
« 在以下方面回复#3: 昨天 在02:18:13 pm»
RAM不是't 日e only 日ing 您 might want to access via a pointer

那's不正确。在Padauk体系结构中,这些资源不是内存映射的。大多数都贴上标签"I/O", and 输入输出 includes 日e pins, all special 寄存器s, 日e multiplier, 日e ADC etc.. The addresses of 输入输出 resources are in a different address space (which is also 8 bits wide) and 日ey are accessed by different opcodes. So to speak, 日e 9th bit of 日e address is part of 日e opcode, not part of 日e pointer. In any case, a pointer can only point to RAM locations, not to 输入输出. And 日ere is barely a handful of instructions 日at accept pointers (respectively indirect addressing) and 日ey don'甚至支持补偿。

关于最小化模具和成本,这都是很有意义的。唯一的不'对我来说有意义的是有16位指针,其高8位未使用。
« 最后编辑: 昨天 在Pastaclub在02:20:56 pm »
 

线上 退休的猫

  • 定期贡献者
  • *
  • 职位:57
  • 国家: au
回复:帕达克:为什么8位可以寻址整个RAM时为什么使用16位指针?
« 在以下方面回复#4: 昨天 在03:17:46 pm»
pdk13-16变体的指令集可以在下面看到 //free-pdk.github.io/ 也许您的意思是像IDXM这样的16位内存操作,其中M必须按字对齐。在pdk16中,指令的内存地址部分是8位还是9位,具体取决于您对最低有效0位进行计数。指令中的其余位是操作码。我不'正如体系结构名称所暗示的,看不到16位指针,只是16位指令。

If 您 mean 日at because of 日e alignment requirement, a whole word has to be 我们 ed, 日at'是的。可能是对指令集进行过时的验证,也可能是统一处理指向代码存储器的指针(用于常量和常量)。
« 最后编辑: 昨天 在03:36:54 pm通过retiredfeline »
 

离线 mikerj

  • 超级贡献者
  • ***
  • 帖子:2594
  • 国家: b
回复:帕达克:为什么8位可以寻址整个RAM时为什么使用16位指针?
« 在以下问题上回复#5: 昨天 在06:46:29 pm»
那's不正确。在Padauk体系结构中,这些资源不是内存映射的。大多数都贴上标签"I/O", and 输入输出 includes 日e pins, all special 寄存器s, 日e multiplier, 日e ADC etc.. The addresses of 输入输出 resources are in a different address space (which is also 8 bits wide) and 日ey are accessed by different opcodes. So to speak, 日e 9th bit of 日e address is part of 日e opcode, not part of 日e pointer. In any case, a pointer can only point to RAM locations, not to 输入输出

那么Padauk micro无法通过代码读取程序存储器吗?  那 seems very limiting.
 

离线 西风

  • 超级贡献者
  • ***
  • 帖子:3332
  • 国家: 我们
回复:帕达克:为什么8位可以寻址整个RAM时为什么使用16位指针?
« 在以下方面回复#6: 今天 在03:16:54 am»
引用
Padauk micro无法通过代码读取程序存储器?  那 seems very limiting.
与早期的PIC相同。  In fact, same as lots of 日e PIC16F series - 您 don'得到一个能够寻址Flash的FSR,直到"enhanced midrange" architecture.  Instead, 您 get to have lists of "retw"指令(以W返回立即数) (程序内存不足16位宽,'非常重要...)


从我身上've read here, 您 won't be far from wrong if 您 assume 日at 日e Padauk chips are quite similar to 日e older PICs...
 

线上 机电一体化

  • 超级贡献者
  • ***
  • 帖子:10261
  • 国家: 我的
  • 重新评估指令...
回复:帕达克:为什么8位可以寻址整个RAM时为什么使用16位指针?
« 在以下方面回复#7: 今天 在上午03:42:07»
关于最小化模具和成本,这都是很有意义的。唯一的不'对我来说有意义的是有16位指针,其高8位未使用。
您've answered 您r own question. 对于get about any other points about addressing extra memory, instrucrtion length etc. 您r answer is fundamental in scalability and backward and 对于ward compatibility. 日e later point is 日e main reason why most people mourn about when broken. if 日e mcu is 8 bit addressable, 您 can leave 日e hi byte zero and 对于get about it.
It'很难开始生活..自然的特征..物理定律是伟大的美的数学理论...您可能想知道为什么?我们的知识表明,自然是如此构成的。我们只需要接受它。可以这样说来描述这种情况...(Paul Dirac)
 

线上 退休的猫

  • 定期贡献者
  • *
  • 职位:57
  • 国家: au
回复:帕达克:为什么8位可以寻址整个RAM时为什么使用16位指针?
« 在以下方面回复#8: 今天 在04:06:38 am»
Philipp Klaus Krause撰写的这份2020年10月的简短论文是为Padauk MCU添加SDCC支持的开发人员: //arxiv.org/pdf/2010.04633 在pdk15和pdk16架构中,有LDTAB [HL]指令用于访问代码存储器中的常量,而RET k在较早的架构中使用。您可以看到SDCC利用了未使用的位来实现通用指针。对于其他目标(例如MCS-51)也是如此。本文还提出了一些建议(主要针对我假设的Padauk),主要是通过更好地支持栈变量来改善指令集,而C经常使用它。
« 最后编辑: 今天 在04:10:25上午通过retiredfeline »
 


分享我

掘客  脸书  SlashDot  美味的  Technorati  推特  谷歌  雅虎
中频