91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

UEFI開發基礎匯編代碼如何使用

發布時間:2022-06-06 13:42:52 來源:億速云 閱讀:188 作者:iii 欄目:開發技術

這篇文章主要講解了“UEFI開發基礎匯編代碼如何使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“UEFI開發基礎匯編代碼如何使用”吧!

UEFI中使用匯編代碼

EDK代碼中包含一部分匯編代碼,目前支持的有.S、.asm和.nasm格式的匯編(第一個是AT&T匯編,后兩個是Intel匯編,只是使用的匯編樣式稍有不同,.nasm是開源和免費的,更加的通用),如果是在Windows下編譯,一般使用的是NASM編譯器,所以會使用.nasm格式的匯編文件,而編譯工具也是免費的,可以下載,并放到C:\Nasm目錄,之后就可以在EDK代碼中使用。

下面是一個示例,它是一個庫模塊:

首先創建inf文件:

[Defines]
  INF_VERSION                       = 0x00010005
  BASE_NAME                         = AsmLib
  FILE_GUID                         = 2A3061AF-740E-4B62-B900-FC24AF9B072E
  MODULE_TYPE                       = BASE
  VERSION_STRING                    = 1.0
  LIBRARY_CLASS                     = AsmLib
#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES              = IA32 X64 IPF EBC
#
[Sources.X64]
  X64/AsmLib.nasm
[Packages]
  MdePkg/MdePkg.dec
  BeniPkg/BeniPkg.dec

這里的代碼跟普通inf沒有區別,只是指定的源文件Sources稍有不同,通常會去指定時Ia32還是X64

匯編代碼編寫:

  SECTION .text
;------------------------------------------------------------------------------
; VOID
; EFIAPI
; AsmNop (
;   VOID
;   );
;------------------------------------------------------------------------------
global ASM_PFX(AsmNop)
ASM_PFX(AsmNop):
  nop
  ret

SECTION .text指定了代碼段,之后的就是匯編代碼了。

global ASM_PFX指定了全局的函數,可以在外部調用,當然同時也需要增加頭文件:

/**
  Code for nothing.
  @param  NA
  @retval  NA
**/
VOID
EFIAPI
AsmNop (
  VOID
  );

之后就可以使用該函數了,這跟普通的函數使用沒有區別。

下面是另一個例子,用于向Legacy串口輸出一個字符:

global ASM_PFX(AsmSerialIo)
ASM_PFX(AsmSerialIo):
  mov dx, 03f3h
  mov eax, 0
loop:
  in  al, dx
  bt  eax, 5
  jnc loop      ; Wait until ready
  mov dx, 03f8h
  mov ax, cx    ; cx is the input parameter
  out dx, ax    ; Output the character
  ret

測試代碼可以在BeniPkg\DynamicCommand\TestDynamicCommand\Test.c中找到。

感謝各位的閱讀,以上就是“UEFI開發基礎匯編代碼如何使用”的內容了,經過本文的學習后,相信大家對UEFI開發基礎匯編代碼如何使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛浦县| 昌江| 吉隆县| 镇宁| 广安市| 句容市| 宝应县| 密云县| SHOW| 确山县| 包头市| 泗水县| 乐亭县| 巴彦淖尔市| 读书| 武隆县| 垣曲县| 建平县| 睢宁县| 墨竹工卡县| 海伦市| 缙云县| 八宿县| 建瓯市| 晋城| 炎陵县| 柞水县| 肇东市| 正蓝旗| 凤山市| 新乡市| 内黄县| 门头沟区| 启东市| 石嘴山市| 绥芬河市| 苏州市| 德格县| 乳源| 临安市| 江门市|