跳轉到內容

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。

返回:無。

華夏公益教科書