From 2896ce46c47a3f5ba053e896ee878378e7bc78fa Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Sun, 3 Sep 2017 00:37:39 +0200 Subject: [PATCH] tinycc: scaffold/main.c: running tcc-compiled binary #2. * scaffold/main.c (main)[__i386__]: Rename from _start. --- scaffold/main.c | 52 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/scaffold/main.c b/scaffold/main.c index 46a2ae1c..2d5a08af 100644 --- a/scaffold/main.c +++ b/scaffold/main.c @@ -18,13 +18,16 @@ * along with Mes. If not, see . */ -#if __i386__ -#define main _start -#endif +// #if __i386__ +// #define main _start +// #endif int main (int argc, char *argv[]) { +#if 0 + + #if __MESC__ asm ("mov____$i32,%ebx !42"); asm ("mov____$i32,%eax !1"); @@ -34,29 +37,54 @@ main (int argc, char *argv[]) asm (".byte 144"); asm (".byte 144"); #if 1 //MESC_TCC - asm (".byte 187"); + asm (".byte 184"); //mov $1,%eax asm (".byte 42"); asm (".byte 0"); asm (".byte 0"); asm (".byte 0"); - asm (".byte 184"); + asm (".byte 201"); // leave + asm (".byte 195"); // ret + +#if 0 + + asm (".byte 187"); // mov $42,%ebx + asm (".byte 42"); + asm (".byte 0"); + asm (".byte 0"); + asm (".byte 0"); + + asm (".byte 184"); //mov $1,%eax asm (".byte 1"); asm (".byte 0"); asm (".byte 0"); asm (".byte 0"); - asm (".byte 205"); + asm (".byte 201"); // leave + asm (".byte 195"); // ret + + + asm (".byte 205"); //int $0x80 asm (".byte 128"); - asm (".byte 137"); + asm (".byte 137"); //%eax,-0x4(%ebp) asm (".byte 69"); asm (".byte 252"); + asm (".byte 244"); //hlt + + // asm (".byte 201"); + // asm (".byte 195"); +#endif + #else - asm ("mov $42,%ebx"); - asm ("mov $1,%eax"); - asm ("int $128"); + asm ("mov $42,%eax"); + asm ("leave"); + asm ("ret"); + + // asm ("mov $42,%ebx"); + // asm ("mov $1,%eax"); + // asm ("int $128"); #endif asm (".byte 144"); @@ -68,9 +96,13 @@ main (int argc, char *argv[]) asm ("mov $42,%rbx"); asm ("mov $1,%rax"); asm ("int $128"); + asm ("hlt"); #else #error "platform not supported" #endif // not reached + +#endif + return 42; }