1 .text 2 .align 4 3 4 .globl _start 5_start: 6#if 0 7 pushl %ebp 8 movl %esp,%ebp 9 pushl %ebx # save ebx 10 movl 12(%ebp),%eax # eax <- systab 11 movl 24(%eax),%ebx # ebx <- systab->FirmwareVendor 12 pushl %ebx 13 movl 44(%eax),%ebx # ebx <- systab->ConOut 14 pushl %ebx 15 movl 4(%ebx),%eax # eax <- conout->OutputString 16 call *%eax 17 movl -4(%ebp),%ebx # restore ebx 18 leave 19 ret 20 21#else 22 23 pushl %ebp 24 movl %esp,%ebp 25 pushl %ebx 26 call 0f 270: popl %eax 28 addl $hello-0b,%eax 29 pushl %eax 30 movl 12(%ebp),%eax # eax <- systab 31 movl 44(%eax),%ebx # ebx <- systab->ConOut 32 pushl %ebx 33 movl 4(%ebx),%eax # eax <- conout->OutputString 34 call *%eax 35 movl -4(%ebp),%ebx 36 leave 37 ret 38 39 .section .rodata 40 .align 2 41hello: .byte 'h',0,'e',0,'l',0,'l',0,'o',0,'\n',0,'\r',0,0,0 42 43#endif 44