|
@@ -15,7 +15,32 @@
|
|
|
begtext:
|
|
|
! This code is placed at the beginning of the ELF executable and is the
|
|
|
! first thing that runs.
|
|
|
-
|
|
|
+ !
|
|
|
+ ! On entry, the stack looks like this:
|
|
|
+ !
|
|
|
+ ! sp+.. NULL
|
|
|
+ ! sp+8+(4*argc) env (X quads)
|
|
|
+ ! sp+4+(4*argc) NULL
|
|
|
+ ! sp+4 argv (argc quads)
|
|
|
+ ! sp argc
|
|
|
+ !
|
|
|
+ ! The ACK actually expects:
|
|
|
+ !
|
|
|
+ ! sp+8 argc
|
|
|
+ ! sp+4 argv
|
|
|
+ ! sp env
|
|
|
+
|
|
|
+ mov eax, (esp) ! eax = argc
|
|
|
+ lea ebx, 4(esp) ! ebx = argv
|
|
|
+ lea ecx, (esp)(eax*4)
|
|
|
+ add ecx, 12 ! environ
|
|
|
+
|
|
|
+ push ecx ! environ
|
|
|
+ push ebx ! argc
|
|
|
+ push eax ! argv
|
|
|
+ push eax ! dummy, representing the return argument
|
|
|
+ xor ebp, ebp
|
|
|
+
|
|
|
jmp __m_a_i_n
|
|
|
|
|
|
! This provides an emergency exit routine used by EM.
|