有关新AVR指令LAC、LAS、LAT和XCH的更多详细信息



查看AVR指令集,在2010 中添加了四条指令

LAC load and clear
LAS load and set
LAT load and toggle
XCH load and exchange
  1. 有人知道什么芯片上有这些指令吗

  2. 哪些工具支持这些说明

  3. 关于他们做什么的更多信息

    (Z) <-Rd v(Z)、Rd<-(Z)

这是否意味着Rd和(Z)得到了相同的值,或者Rd得到了Z所指的预修正值?

这些芯片可能不在当前的芯片中(截至最初的问题),但都有一个共同的主题-原子内存操作。它们的目的通常是在线程之间进行同步,并且它们在指令集级别的包含可能表明Atmel计划推出多核AVR芯片。由于现在已经指定了它们,工具供应商已经可以将它们添加到汇编程序中,但在芯片有指令之前,他们不会把它们当作大事。(编辑:事实证明,另一个核心是USB外围设备,而不是CPU。感谢avakar提供的信息。)

我从Atmel AVR 8位指令集手册中读到的行为:

LAC-加载和清除,将存储器内容*Z加载到寄存器Rd,同时清除Rd中设置的*Z中的位。

LAS-加载和设置同时设置寄存器中设置的内存位置中的位,并用内存位置的先前内容加载寄存器。例如,对于单比特互斥非常有用。

LAT-加载和切换;与LAS类似,但它使用逐位异或,而不是逐位或,从而切换位。

XCH-交易所;简单地交换存储器和寄存器内容。

所有这些都是RAM访问指令(07/2014参考状态,它们需要两个周期),这些指令结合了操作,因此它们也可以使需要RAM的代码比当前更快。

需要强调的小而重要的细节:LAS、LAC和LAT指令在Z仅指向"真实"SRAM时工作。这不是(内存映射)寄存器等。因此,事实上,这些寄存器对您自己的(操作系统)数据或XMega USB模块都很有用,没有其他外围设备和模块。

这是一个遗憾(例如,它对于操作PMIC.CTRL标志非常方便),但它确实不起作用。经过测试。看起来LAS、LAC和LAT在应用于内存映射寄存器时具有与XCH(Rd和(Z)之间的交换,但没有比特旋转)相同的效果。

相关内容

最新更新