46a2ae1ca4600a331af619b3402b085e7e73f66d
[mes.git] / scaffold / main.c
1 /* -*-comment-start: "//";comment-end:""-*-
2  * Mes --- Maxwell Equations of Software
3  * Copyright © 2016,2017 Jan Nieuwenhuizen <janneke@gnu.org>
4  *
5  * This file is part of Mes.
6  *
7  * Mes is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or (at
10  * your option) any later version.
11  *
12  * Mes is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #if __i386__
22 #define main _start
23 #endif
24
25 int
26 main (int argc, char *argv[])
27 {
28 #if __MESC__
29   asm ("mov____$i32,%ebx !42");
30   asm ("mov____$i32,%eax !1");
31   asm ("int____$0x80");
32 #elif __i386__
33   asm (".byte 144");
34   asm (".byte 144");
35   asm (".byte 144");
36 #if 1 //MESC_TCC
37   asm (".byte 187");
38   asm (".byte 42");
39   asm (".byte 0");
40   asm (".byte 0");
41   asm (".byte 0");
42
43   asm (".byte 184");
44   asm (".byte 1");
45   asm (".byte 0");
46   asm (".byte 0");
47   asm (".byte 0");
48
49   asm (".byte 205");
50   asm (".byte 128");
51
52   asm (".byte 137");
53   asm (".byte 69");
54   asm (".byte 252");
55
56 #else
57   asm ("mov    $42,%ebx");
58   asm ("mov    $1,%eax");
59   asm ("int    $128");
60 #endif
61
62   asm (".byte 144");
63   asm (".byte 144");
64   asm (".byte 144");
65
66 #elif __x86_64__
67   asm (".byte 144");
68   asm ("mov    $42,%rbx");
69   asm ("mov    $1,%rax");
70   asm ("int    $128");
71 #else
72   #error "platform not supported"
73 #endif
74   // not reached
75   return 42;
76 }