欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

UEFI開發(fā)基礎(chǔ)匯編代碼的使用

 更新時間:2022年06月06日 10:39:13   作者:jiangwei0512  
這篇文章主要為大家介紹了UEFI開發(fā)基礎(chǔ)匯編代碼使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

UEFI中使用匯編代碼

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

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

首先創(chuàng)建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沒有區(qū)別,只是指定的源文件Sources稍有不同,通常會去指定時Ia32還是X64

匯編代碼編寫:

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

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

global ASM_PFX指定了全局的函數(shù),可以在外部調(diào)用,當(dāng)然同時也需要增加頭文件:

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

之后就可以使用該函數(shù)了,這跟普通的函數(shù)使用沒有區(qū)別。

下面是另一個例子,用于向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開發(fā)基礎(chǔ)匯編代碼使用的詳細(xì)內(nèi)容,更多關(guān)于UEFI開發(fā)匯編代碼的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 王爽 匯編語言學(xué)習(xí)筆記(詳細(xì))

    王爽 匯編語言學(xué)習(xí)筆記(詳細(xì))

    王爽匯編語言第三版是一款高清完整版的專業(yè)編程圖書,該書結(jié)構(gòu)設(shè)計合理,內(nèi)容全面涵蓋知識點豐富,適合自學(xué)者使用,有需要者快來
    2020-01-01
  • 匯編語言系列之匯編實現(xiàn)簡單數(shù)學(xué)運算

    匯編語言系列之匯編實現(xiàn)簡單數(shù)學(xué)運算

    這篇文章主要介紹了匯編語言系列之匯編實現(xiàn)簡單數(shù)學(xué)運算的思路詳解,本文給大家列出了兩種算術(shù)運算的代碼,設(shè)計思路給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • 匯編:Debug的常用命令

    匯編:Debug的常用命令

    DEBUG是專門為匯編語言設(shè)計的一種調(diào)試工具,它通過步進(jìn),設(shè)置斷點等方式為匯編語言程序員提供了非常有效的調(diào)試手段
    2023-08-08
  • 匯編語言基礎(chǔ)理解計算機(jī)底層技術(shù)原理

    匯編語言基礎(chǔ)理解計算機(jī)底層技術(shù)原理

    這篇文章主要為大家介紹了匯編語言基礎(chǔ),理解計算機(jī)底層原理,想要成為高級程序員,我們必須要學(xué)會匯編語言,匯編語言是非常重要的計算機(jī)底層技術(shù),一般用于底層的編寫
    2021-11-11
  • 匯編語言功能用循環(huán)累加實現(xiàn)乘法

    匯編語言功能用循環(huán)累加實現(xiàn)乘法

    這篇文章主要為大家介紹了匯編語言實現(xiàn)功能,使用用循環(huán)累加來實現(xiàn)乘法,文中通過幾個問題實例分析,來為大家進(jìn)行詳細(xì)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • X86匯編調(diào)試環(huán)境搭建的過程

    X86匯編調(diào)試環(huán)境搭建的過程

    本次使用vscode搭建的,需要的插件有X86 and X86_64 Assembly(也可以使用masm插件),還有一個hexdump for VSCode。 安裝NASM,并添加到環(huán)境變量,下面看下X86匯編調(diào)試環(huán)境搭建的過程吧
    2021-11-11
  • 匯編語言MIPS指令分類及尋址模式原理概念

    匯編語言MIPS指令分類及尋址模式原理概念

    這篇文章主要為大家介紹了匯編語言MIPS指令分類及尋址模式的原理及概念,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 匯編語言指令集學(xué)習(xí)條件轉(zhuǎn)移指令詳解

    匯編語言指令集學(xué)習(xí)條件轉(zhuǎn)移指令詳解

    這篇文章主要為大家介紹了匯編語言指令集學(xué)習(xí)條件轉(zhuǎn)移的指令全面總結(jié)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 匯編 函數(shù)調(diào)用的實現(xiàn)

    匯編 函數(shù)調(diào)用的實現(xiàn)

    這篇文章主要介紹了匯編 函數(shù)調(diào)用的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • VScode配置8086匯編環(huán)境的過程解析

    VScode配置8086匯編環(huán)境的過程解析

    這篇文章主要介紹了VScode配置8086匯編環(huán)境的過程解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04

最新評論