DriversCompiler for UEFI apps?

I have virtually zero x86 assembly experience, but I was wondering how hard it would be to modify the DriversCompiler to add the ability to produce bootable UEFI apps and runtime services (which are just special DLLs). Seems like it should be easier than what has already been done since the UEFI boot manager can set the processor to 32 / 64-bit long mode and load runtime services before passing control to a kernel which then would not require an assembly boot stub to switch the processor mode.
I am interested in seeing how far I can get by having drivers as EFI runtime services instead of as part of the kernel and it'd be nice if I could leverage existing C# knowledge for this little experiment.

Comments

  • Hi,
    Firstly, extremely sorry that your discussion wasn't published months ago. An automatic update to the site switched on a moderation feature that I had no idea about so there was a "hidden" list of discussions I wasn't aware of.

    On the off chance that you're still interested in this: The x86 assembly itself shouldn't need to change. As far as I am aware, what would need to change is the header of the assembly code and the format of the final output file. I've never looked in detail at (U)EFI. It should be pretty easy to transform the header and replace the bootloader though because the Drivers Compiler has a fairly straightforward function that it calls to link the assembly and a second one to output the ISO. If you look in the Architecture libraries you should find the right file. E.g. https://github.com/FlingOS/FlingOS/blob/develop/Drivers/Compiler/Architectures/x86_32/LibraryFunctions.cs

    Once again, very sorry your discussion has gone unnoticed for so long and I hope you might still be interested in working on this. UEFI support would be very nice to have!

    Kind regards,
    Ed
  • This article also outlines the operation of the Drivers Compiler: http://www.flingos.co.uk/docs/reference/Drivers-Compiler/

Sign In or Register to comment.