返回顶部
首页 > 资讯 > 精选 >UEFI开发基础汇编代码如何使用
  • 244
分享到

UEFI开发基础汇编代码如何使用

2023-06-30 18:06:18 244人浏览 安东尼
摘要

这篇文章主要讲解了“UEFI开发基础汇编代码如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“UEFI开发基础汇编代码如何使用”吧!UEFI中使用汇编代码EDK代码中包含一部分汇编代码,

这篇文章主要讲解了“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指定了全局的函数,可以在外部调用,当然同时也需要增加头文件:

VOIDEFIAPIAsmNop (  VOID  );

之后就可以使用该函数了,这跟普通的函数使用没有区别。

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

global ASM_PFX(AsmSerialIo)ASM_PFX(AsmSerialIo):  mov dx, 03f3h  mov eax, 0loop:  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/330884.html(转载时请注明来源链接)

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

猜你喜欢
  • UEFI开发基础汇编代码如何使用
    这篇文章主要讲解了“UEFI开发基础汇编代码如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“UEFI开发基础汇编代码如何使用”吧!UEFI中使用汇编代码EDK代码中包含一部分汇编代码,...
    99+
    2023-06-30
  • UEFI开发基础汇编代码的使用
    UEFI中使用汇编代码 EDK代码中包含一部分汇编代码,目前支持的有.S、.asm和.nasm格式的汇编(第一个是AT&T汇编,后两个是Intel汇编,只是使用的汇编样式稍有...
    99+
    2024-04-02
  • 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 服务器 网络
  • UEFI开发中用户交互界面如何使用
    这篇文章主要介绍“UEFI开发中用户交互界面如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“UEFI开发中用户交互界面如何使用”文章能帮助大家解决问题。作用关于UNI文件的作用,在参考文档中做...
    99+
    2023-06-30
  • 编程开发中如何写代码
    这篇文章给大家分享的是有关编程开发中如何写代码的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 标识符(命名规则)标识符应当直观且可以拼读,可望文知意,***采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼...
    99+
    2023-06-17
  • Java高并发编程基础之如何使用AQS
    本篇内容主要讲解“Java高并发编程基础之如何使用AQS”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java高并发编程基础之如何使用AQS”吧! 引言曾经有一道比较比较经典的面试题“...
    99+
    2023-06-15
  • 如何用代码实现HTML5Canvas基础绘图
    如何用代码实现HTML5Canvas基础绘图,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。基本绘制XML/HTML Code复制内容到剪贴...
    99+
    2024-04-02
  • 【Linux】基础开发工具使用 --- gcc
    目录 预处理 编译 汇编 链接 函数库 协助记忆 🧋GCC(GNU Compiler Collection)是由GNU开发的编程语言编译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Jav...
    99+
    2023-09-09
    linux 运维 服务器
  • 如何在 ASP 开发技术中使用 javascript 编写更安全的代码?
    ASP是一种常用的Web应用程序开发技术,而JavaScript是一种常用的客户端脚本语言。在ASP开发过程中,使用JavaScript编写代码是非常常见的,但如何编写更安全的JavaScript代码呢?在本文中,我们将探讨如何在ASP开发...
    99+
    2023-10-08
    开发技术 编程算法 javascript
  • 如何使用代码开发css3的动画按钮
    今天就跟大家聊聊有关如何使用代码开发css3的动画按钮,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 今天给大家带来一款基于css3的动画按钮。实现...
    99+
    2024-04-02
  • Web前端开发如何编写高质量代码
    这篇文章将为大家详细讲解有关Web前端开发如何编写高质量代码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。(P4) Web标准由一系列标准组合而成,其核心理念是将网页的结构、样式和行为分离开来,所以它可以...
    99+
    2023-06-08
  • C#开发中如何编写可测试的代码
    C#开发中如何编写可测试的代码简介:随着软件开发的不断发展,测试驱动开发(TDD)以及单元测试已经成为每个开发人员的必备技能。编写可测试的代码是确保代码质量和可维护性的关键。本文将介绍在C#开发中编写可测试代码的一些技巧和最佳实践,同时附上...
    99+
    2023-10-22
    单元测试 测试驱动开发(TDD) Mock对象
  • 详解如何实现C++虚函数调用汇编代码
    虚函数(代码段地址)被存放在虚函数表中,调用虚函数的流程是这样子的:先获取虚函数表的首地址,然后根据目标虚函数在虚函数表的位置(offset偏移)取出虚函数表中的虚函数地址,最后去c...
    99+
    2024-04-02
  • 《PHP并发编程基础教程:如何使用容器实现多线程编程?》
    PHP并发编程基础教程:如何使用容器实现多线程编程? PHP是一种广泛使用的服务器端编程语言,但是它在并发编程方面的表现并不理想。不过,使用容器技术,我们可以在PHP中实现多线程编程,从而提高程序的并发处理能力。本文将介绍如何使用容器技术来...
    99+
    2023-10-02
    并发 教程 容器
  • Golang开发建议:如何编写可测试的代码
    Golang开发建议:如何编写可测试的代码引言:随着Golang在软件开发领域的流行,越来越多的开发者开始使用Golang编写应用程序。然而,编写可测试的代码并不是一件容易的事情。在本文中,我将分享一些关于如何编写可测试的Golang代码的...
    99+
    2023-11-22
    Golang 编写 可测试
  • 【Android开发基础】Fragment(碎片)中ViewModel的使用
    文章目录 一、简述二、创建ViewModel三、了解LiveData四、使用ViewModel1、单体数据2、实体类数据(1)创建LiveData实体(2)编写ViewModel ...
    99+
    2023-09-22
    android 观察者模式
  • Android使用JetpackCompose开发零基础起步教程
    目录永远的Hello World分解的HelloWorld代码预览函数先搭建好之后呢,我们就来做第1个例子。 永远的Hello World 先搭建好之后呢,我们就来做第1个例子,编程...
    99+
    2023-05-15
    Android Jetpack Compose Jetpack Compose入门
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作