UefiDiskBenchmark.efi: Mass storage benchmark for UEFI (written in FASM)

UefiDiskBenchmark: Mass storage benchmark, based on EFI_BLOCK_IO_PROTOCOL EFI Byte Code (EBC) application.

Output parameters and flags:
“#” Device number in the list
“Revision” Revision of UEFI API EFI_BLOCK_IO_PROTOCOL.
“Media” Media ID
“RM” Removable Media flag, for example CD or USB flash
“MP” Media Present
“LP” Logical Partition
“RO” Read Only
“WC” Write Cache
“Block” Block size, bytes
“Align” Required alignment for memory buffer, bytes
“Size” Available size of mass storage device

Known bug: maximum 10 devices supported, include aliases.

https://github.com/manusov/UEFIdiskBenchmark

 

FDBG: AMD64 UEFI debugger

While searching for information about FASM for that last blog post, I also noticed this:

http://fdbg.x86asm.net/

“fdbg for AMD64 is assembler level debugger for user-mode (ring3) binary applications, running in long mode (64-bit) – Windows and Linux versions. Version for UEFI x64 is also available.

Supported platforms:

  • Windows XP x64, Windows 2003 server x64, Vista x64, Windows 2008 server x64, Windows 7 x64
  • Linux x64
  • UEFI x64

Windows Version is GUI based.

Linux version is command line based (console) and doesn’t need any library to run so it doesn’t matter what Linux distribution you use.

UEFI version is command line based.

fdbg project was started to help in debugging programs written in assembler to everybody who feels the power of assembler

 

  • it is written in Flat Assembler and source files are included
  • its syntax is similar to FASM
  • it supports debug symbols and you can find some tricks in included help how to debug without symbols
  • it is suitable for everybody who tries to create his/her first program written in assembler
  • it has some features and power for experienced users too
  • it is very small

 

I haven’t tried it yet,  but this looks interesting…

UEFI programming in Flat Assembler (FASM)

FASM is the Flat Assembler. There’s a new Github project with some FASM-based assembly hello-world samples for UEFI. UEFI’s EDK-II generall prefers C over assembly, and has some code to help replace the need for assembly: I have some notes on that somewhere, I was going to write a blog on that someday. And I thought that EDK-II prefers NASM as their assembler, so this FASM-based, Intel 32-bit assembly-based UEFI sample code is interesting. The x86asm.net article on UEFI programming also has examples of FASM-based UEFI programming.

https://github.com/eszkadev/UEFI-32bit-asm-examples

http://flatassembler.net/

http://x86asm.net/articles/uefi-programming-first-steps/