tinycc: scaffold/main.c: running tcc-compiled binary #2.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sat, 2 Sep 2017 22:37:39 +0000 (00:37 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sat, 2 Sep 2017 22:37:39 +0000 (00:37 +0200)
* scaffold/main.c (main)[__i386__]: Rename from _start.

scaffold/main.c

index 46a2ae1ca4600a331af619b3402b085e7e73f66d..2d5a08af4b84286aa23778dce9da45b7a279f266 100644 (file)
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#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;
 }