返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >UEFI开发基础汇编代码的使用
  • 128
分享到

UEFI开发基础汇编代码的使用

2024-04-02 19:04:59 128人浏览 安东尼
摘要

UEFI中使用汇编代码 EDK代码中包含一部分汇编代码,目前支持的有.S、.asm和.nasm格式的汇编(第一个是AT&T汇编,后两个是Intel汇编,只是使用的汇编样式稍有

UEFI中使用汇编代码

EDK代码中包含一部分汇编代码,目前支持的有.S、.asm和.nasm格式的汇编(第一个是AT&T汇编,后两个是Intel汇编,只是使用的汇编样式稍有不同,.nasm是开源和免费的,更加的通用),如果是在windows下编译,一般使用的是NASM编译器,所以会使用.nasm格式的汇编文件,而编译工具也是免费的,可以在https://www.nasm.us/下载,并放到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指定了全局的函数,可以在外部调用,当然同时也需要增加头文件:


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开发汇编代码的资料请关注编程网其它相关文章!

--结束END--

本文标题: UEFI开发基础汇编代码的使用

本文链接: https://lsjlt.com/news/150596.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • UEFI开发基础汇编代码的使用
    UEFI中使用汇编代码 EDK代码中包含一部分汇编代码,目前支持的有.S、.asm和.nasm格式的汇编(第一个是AT&T汇编,后两个是Intel汇编,只是使用的汇编样式稍有...
    99+
    2024-04-02
  • UEFI开发基础汇编代码如何使用
    这篇文章主要讲解了“UEFI开发基础汇编代码如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“UEFI开发基础汇编代码如何使用”吧!UEFI中使用汇编代码EDK代码中包含一部分汇编代码,...
    99+
    2023-06-30
  • UEFI开发基础HII代码示例
    目录代码示例模块formsetformsubtitleoneofstringnumerictextcheckboxgotolabel代码示例 代码 https://gite...
    99+
    2024-04-02
  • UEFI开发基础HII代码实例分析
    这篇文章主要介绍“UEFI开发基础HII代码实例分析”,在日常操作中,相信很多人在UEFI开发基础HII代码实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”UEFI开发基础HII代码实例分析”的疑惑有所...
    99+
    2023-06-30
  • UEFI开发实战用户交互界面基础说明
    目录前言启动UiApp模块字体字符串UI Entry前言 本文以vUDK2017: https://github.com/tianocore/edk2.git Tag vUDK201...
    99+
    2024-04-02
  • 【Linux】环境基础开发工具使用(万字汇总)
    🎇Linux:环境基础开发工具使用 博客主页:一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话...
    99+
    2023-09-05
    linux 服务器 网络
  • 一些基础的java编程代码
    JAVA基础代码 文章目录 JAVA基础代码1、强制类型转换2、判断是否为闰年3、交换数字4、单价,数量,金额,满500打8折5、生成随机数并猜数6、乘法表8、打印9、奇数偶数和10、1000...
    99+
    2023-09-27
    java 开发语言 算法
  • 【Linux】基础开发工具使用 --- gcc
    目录 预处理 编译 汇编 链接 函数库 协助记忆 🧋GCC(GNU Compiler Collection)是由GNU开发的编程语言编译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Jav...
    99+
    2023-09-09
    linux 运维 服务器
  • 汇编基础教程段的定义应用详解
    目录段种类代码段数据段DS和[address]栈段栈操作方式8086CPU提供入栈和出栈指令栈顶超界的问题push、pop指令PUSH(入栈)POP(出栈)栈段定义思考访问段前缀场景...
    99+
    2024-04-02
  • 【Android开发基础】Fragment(碎片)中ViewModel的使用
    文章目录 一、简述二、创建ViewModel三、了解LiveData四、使用ViewModel1、单体数据2、实体类数据(1)创建LiveData实体(2)编写ViewModel ...
    99+
    2023-09-22
    android 观察者模式
  • 使用Python编写一个最基础的代码解释器的要点解析
    一直以来都对编译器和解析器有着很大的兴趣,也很清楚一个编译器的概念和整体的框架,但是对于细节部分却不是很了解。我们编写的程序源代码实际上就是一串字符序列,编译器或者解释器可以直接理解并执行这个字符序列,这看...
    99+
    2022-06-04
    要点 代码 基础
  • Android开发基础 几种常用对话框的使用
    Android开发基础 几种常用对话框的使用 开发步骤如下:(1)布局界面(2)获取按钮,添加事件监听器,实现对话框 。 我采用的是Relati...
    99+
    2022-06-06
    android开发 Android
  • SQLCLR 的使用及开启基础
    概要SQLCLR 我也不是十分明白.就不说了这里我用 VS TOOLS 来开发一个 用于入门 在使用 SQLCLR 时候需要懂得一些 他的配置 他有个 轻型池 高级设置有点关联 他不支持 sqlclr, 我...
    99+
    2024-04-02
  • Android使用JetpackCompose开发零基础起步教程
    目录永远的Hello World分解的HelloWorld代码预览函数先搭建好之后呢,我们就来做第1个例子。 永远的Hello World 先搭建好之后呢,我们就来做第1个例子,编程...
    99+
    2023-05-15
    Android Jetpack Compose Jetpack Compose入门
  • Java高并发编程基础之如何使用AQS
    本篇内容主要讲解“Java高并发编程基础之如何使用AQS”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java高并发编程基础之如何使用AQS”吧! 引言曾经有一道比较比较经典的面试题“...
    99+
    2023-06-15
  • 零基础学会Python编程——开发环境的搭建
    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录  前言 学习目标 一.python 介绍  1.Python 的历史 2.Pyt...
    99+
    2023-09-09
    python 开发语言 原力计划
  • java编程基础之模仿用户登录代码分享
    上一篇文章我们了解了Java背包问题求解实例代码,接下来我们看看Java中模仿用户登录的相关代码,下面是具体内容。基于用户从控制台输入模拟的简陋用户登录验证Demo原理: 利用 Scanner 类中 nextLine() 提取用户从控制台输...
    99+
    2023-05-30
    java 用户登录 ava
  • javaweb开发基础教程(Java web开发常用的框架)
    JavaWeb开发基础教程包括以下内容:1. JavaWeb基础知识:HTML、CSS、JavaScript等前端基础知识,Serv...
    99+
    2023-09-22
    javaweb
  • web开发中怎么用代码编制情书
    这篇文章主要讲解了“web开发中怎么用代码编制情书”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web开发中怎么用代码编制情书”吧!感谢各位的阅读,以上就是“web开发中怎么用代码编制情书”...
    99+
    2023-06-03
  • 【代码审计-PHP】基于Thinkphp框架开发的
      前言: 介绍:  博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocu...
    99+
    2023-09-07
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作