This tool is an experiment to try to implement an EFI Byte Code Virtual Machine
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.
System information, benchmark utility for UEFI. Use EFI Byte Code (EBC). EBC instructions coded as FASM macro. SOURCE directory contains FASM source, plus EBC application build service utilites for DOS(TASM) and Win32(FASM). EXECUTABLE directory contains UEFI EBC application. For UEFI, cross platform (x64, IA32, +).
Exciting, another open source EBC tool!
ebc.asm: EFI Byte Code Assembler macroinstructions for fasmg assembly engine
Pete Batard has added EBC Debugger support to the EDK2 project! As I understand it, there was EBC Debugger support in the original EDK project, but it was not carried forward into the EDK2 project, so this is great news! It sounds like this initial patch will need to go through an iteration or two, so hold off until the dust settles…
“The EBC Debugger, which was present in Tianocore, is an invaluable tool for EBC development. This patch adds it back into the EDK2, allowing, for instance, the compilation of an AARCH64 EBC debugger. […]”
EBC is a bytecode and VM that is widely used, yet barely understood by most, including security researchers. While EBC was initially an Intel-centric technology, only supporting their Itaniaum, x86, and x64 processors, and only available from their commercial-only Intel C Compiler, these days ARM is also targetting EBC support. I’m unclear about ARM’s EBC compiler options, perhaps only via their commecial-only compiler? I hope someone gets EBC support into an open source C compiler codebase, like clang or GCC.
UEFI has a bytecode, the uEfi ByteCode (EBC). It has traditionally been a bytecode used to consolidate all 3 Intel platforms (x86, x64, Itanic), into a single bytecode, so there only needs to be a single driver on the flash, saving flash memory. Unfortunately, it only supported Intel platforms, not ARM, so it was not a universal bytecode for EFI, only a bytecode for Intel systems. Now, someone has ported AArch64 to ARM, so now EBC may now be more interesting!
Import the AArch64 EBC implementation from
Tested with MdeModulePkg/Application/HelloWorld built for EBC.
Would appreciate some reviewing and testing.
Jeff Brasen (1):
MdeModulePkg/EbcDxe: Add AARCH64 EBC VM support
Leif Lindholm (1):
ArmVirtPkg: enable EBC interpreter for AArch64 QEMU