On Feb 19, 2014, at 8:36 AM, Stephen Polkowski <step...@centtech.com> wrote:
> Hi all,
>
> Does the EDK2 have a assembler only example of doing
> a simple "Hello World" app? I would like a GNU GAS example,
> but any would do.
>
No. The BaseLib has assembler (and inline assembler) examples:
https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg/Library/BaseLib/
> If there isn't an example, shouldn't the EDK2 have one?
> I need to write an embedded OS that isn't tied to he EDK2
> build environment.
>
The point of the BaseLib is to write code in C. So no there is not an assembly
example. It is trivial.
// typedef
// EFI_STATUS
// (EFIAPI *EFI_IMAGE_ENTRY_POINT) (
// IN EFI_HANDLE ImageHandle, // RCX
// IN EFI_SYSTEM_TABLE *SystemTable // RDX
// );
//
// VOID
// SetupEfi (
// IN EFI_HANDLE ImageHandle,
// IN EFI_SYSTEM_TABLE *SystemTable
// );
//
.globl __ModuleEntryPoint:
__ModuleEntryPoint:
pushq %rbp
movq %rsp, %rbp // Not required, but it makes debuggers happy
callq _SetupEfi // Call C library constructor for EFI.
// Do your thing
movabsq $0, %rax // return EFI_SUCCESS
popq %rbp
ret
So in this example you write all things EFI in C, like a sensible person.
SetupEfi() can set globals like gBS, gRT, and gST, and you can call C code to
do things EFI.
Assuming you are generating the correct calling conventions 'clang -S -Os’ is
your friend (works with gcc too).
You could write the entry point in C and call the assembly too. Don’t know why
you would write it all in assembly, especially since doing the pointer math on
C structures is not going to be fun.
Well I guess you could be using a different calling convention.
Thanks,
Andrew Fish
PS If you are using a different calling convention look at:
https://svn.code.sf.net/p/edk2/code/trunk/edk2/EmulatorPkg/Unix/Host/X64/Gasket.S
The emulator application uses Unix calling conventions while the EFI modules
use EFI ABI:
ReverseGasket* == Unix ABI code calling EFI ABI code
Gasket* == EFI ABI Code calling Unix ABI code
> Thanks,
>
> Stephen
>
>
>
>
> --
> Stephen Polkowski
> Centaur Technology
> Austin, TX
> (512) 418-5730
>
> ------------------------------------------------------------------------------
> Managing the Performance of Cloud-Based Applications
> Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
> Read the Whitepaper.
> http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel