private void CreateStack(AssemblyCompilerContext assemblyContext, IMemberReference method) { using (var runtime = assemblyContext.GetOutputFileWriter("stack.s")) { runtime.WriteLine(".globl _setup_stack"); runtime.WriteLine(" .def _setup_stack; .scl 2; .type 32; .endef"); runtime.WriteLine("_setup_stack:"); runtime.WriteLine(" movl %esp, %ecx"); runtime.WriteLine(" movl 4(%esp), %esp"); runtime.WriteLine(" call _{0}", method.Name); runtime.WriteLine(" movl %ecx, %esp"); runtime.WriteLine(" ret"); } }