mescc: Tinycc support: refactor _start.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 3 Sep 2017 06:18:18 +0000 (08:18 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 3 Sep 2017 06:18:18 +0000 (08:18 +0200)
* mlibc/libc-mes.c (_start): Refactor.
  (_env): Remove.
* stage0/x86.M1:

mlibc/libc-mes.c
stage0/x86.M1

index d4f985a39e4de7b9fac9dff6d0976217c19e5d60..35b76770f47607ce42ca874df43577adec67d68c 100644 (file)
 
 int g_stdin = 0;
 char **g_environment;
-int _env ();
-int exit ();
-int main(int,char*[]);
+int main (int,char*[]);
 
 int
 _start ()
 {
-  asm ("mov____%ebp,%eax");      // mov    %ebp,%eax
-  asm ("add____$i8,%eax !8");    // add    $0x8,%eax
-  asm ("push___%eax");           // push   %eax
+  asm ("mov____%ebp,%eax");
+  asm ("add____$i8,%eax !4");
 
-  asm ("mov____%ebp,%eax");      // mov    %ebp,%eax
-  asm ("add____$i8,%eax !4");    // add    $0x4,%eax
-  asm ("movzbl_(%eax),%eax");    // movzbl (%eax),%eax
-  asm ("push___%eax");           // push   %eax
+  asm ("movzbl_(%eax),%eax");
+  asm ("add____$i8,%eax !3");
 
-  asm ("mov____%ebp,%eax");      // mov    %ebp,%eax
-  asm ("add____$i8,%eax !4");    // add    $0x4,%eax
+  asm ("shl____$i8,%eax !0x02");
+  asm ("add____%ebp,%eax");
+  asm ("mov____%eax,0x32 &g_environment");
 
-  asm ("movzbl_(%eax),%eax");    // movzbl (%eax),%eax
-  asm ("add____$i8,%eax !3");    // add    $0x3,%eax
+  asm ("mov____%ebp,%eax");
+  asm ("add____$i8,%eax !8");
+  asm ("push___%eax");
 
-  asm ("shl____$i8,%eax !0x02"); // shl    $0x2,%eax
-  asm ("add____%ebp,%eax");      // add    %ebp,%eax
-  asm ("push___%eax");           // push   %eax
+  asm ("mov____%ebp,%eax");
+  asm ("add____$i8,%eax !4");
+  asm ("movzbl_(%eax),%eax");
+  asm ("push___%eax");
 
-  g_environment = _env ();
-  asm ("pop____%eax");           // pop   %eax
-  int r = main ();
-  exit (r);
-}
+  main ();
 
-char **
-_env (char **e)
-{
-  return e;
+  asm ("mov____%eax,%ebx");
+  asm ("mov____$i32,%eax %1");
+  asm ("int____$0x80");
+  asm ("hlt");
 }
 
 void
index 8543a12ffab1d3e04da7acc57d897c0e0b601a51..1b88cbfeb4e57d83700839cc7beb69aa2ea25e42 100644 (file)
@@ -49,6 +49,7 @@ DEFINE cmp____$i8,0x32(%ebp) 83bd
 DEFINE cmp____$i8,0x8(%ebp) 837d
 DEFINE cmp____%al,%dl 38c2
 DEFINE cmp____%edx,%eax 39d0
+DEFINE hlt f4
 DEFINE idiv___%ebx f7fb
 DEFINE int____$0x80 cd80
 DEFINE je32 0f84