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