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