跳转到内容

Alcor6L/eLua/cpu

来自维基教科书,开放的书籍,开放的世界

这个模块处理对 CPU(以及相关模块)功能的底层访问,例如读取和写入内存,或启用和禁用中断。它还提供了对平台特定 CPU 相关常量的访问。

将一个 32 位字写入内存。

cpu.w32( address, data )
  • address - 内存地址。
  • data - 要写入的 32 位数据。

返回:无。

从内存中读取一个 32 位字。

data = cpu.r32( address )
  • address - 内存地址。

返回

  • data - 从内存中读取的 32 位字。

将一个 16 位字写入内存。

cpu.w16( address, data )
  • address - 内存地址。
  • data - 要写入的 16 位数据。

返回:无。

从内存中读取一个 16 位字。

data = cpu.r16( address )
  • address - 内存地址。

返回

  • data - 从内存中读取的 16 位字。

将一个字节写入内存。

cpu.w8( address, data )
  • address - 内存地址。
  • data - 要写入的字节。

返回:无。

从内存中读取一个字节。

data = cpu.r8( address )
  • address - 内存地址

返回

  • data - 从内存中读取的字节。

如果在没有参数的情况下调用,则禁用全局 CPU 中断标志,如果在有参数的情况下调用,则禁用特定中断的资源 ID 列表。

cpu.cli( [id], [resnum1], [resnum2], ... [resnumn])
  • id - 中断 ID。如果指定,则必须至少指定一个资源 ID。
  • resnum1 - 第一个资源 ID,如果指定了 id 则需要。
  • resnum2(可选)- 第二个资源 ID。
  • resnumn(可选)- 第 #n# 个资源 ID。

返回:无。

如果在没有参数的情况下调用,则启用全局 CPU 中断标志,如果在有参数的情况下调用,则启用特定中断的资源 ID 列表。

cpu.sei( [id], [resnum1], [resnum2], ... [resnumn])
  • id - 中断 ID。如果指定,则必须至少指定一个资源 ID。
  • resnum1 - 第一个资源 ID,如果指定了 id 则需要。
  • resnum2(可选)- 第二个资源 ID。
  • resnumn(可选)- 第 #n# 个资源 ID。

返回:无。

cpu.clock

[编辑 | 编辑源代码]

获取 CPU 核心频率。

clock = cpu.clock()

参数:无。

返回

  • clock - CPU 时钟(以赫兹为单位)。

cpu.set_int_handler

[编辑 | 编辑源代码]

将中断 *id* 的 Lua 中断处理程序设置为函数 *handler*。*handler* 可以是 #nil# 以禁用中断处理程序。仅在启用中断支持时可用,有关详细信息,请查看此处。

prev_handler = cpu.set_int_handler( id, handler )
  • id - 中断 ID。
  • handler - Lua 中断处理程序函数,或 *nil* 以禁用 Lua 中断处理程序功能。

返回

  • prev_handler - 中断 *id* 的先前中断处理程序,或 *nil* 如果未为中断 *id* 设置中断处理程序。

cpu.get_int_handler

[编辑 | 编辑源代码]

返回中断 *id* 的 Lua 中断处理程序

handler = cpu.get_int_handler( id )
  • id - 中断 ID。

返回:handler - 中断 *id* 的中断处理程序,或 *nil* 如果未为中断 *id* 设置中断处理程序。

cpu.get_int_flag

[编辑 | 编辑源代码]

获取中断 ID/资源 ID 组合的中断挂起标志,并可选地清除挂起标志。仅在启用中断支持时可用,有关详细信息,请查看此处。

cpu.get_int_flag( id, resnum, [clear] )
  • id - 中断 ID。
  • resnum - 资源 ID。
  • clear(可选)- true 清除中断挂起标志,或 false 保持中断挂起标志不变。如果未指定,则默认为 true。

返回:无。

华夏公益教科书