## Copyright (C) 2016 Jeremiah Orians ## This file is part of stage0. ## ## stage0 is free software: you an redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation, either version 3 of the License, or ## (at your option) any later version. ## ## stage0 is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with stage0. If not, see . :_start CALL_IMMEDIATE %FUNCTION_main COPY_eax_to_ebx LOAD_IMMEDIATE_eax %1 INT_80 :FUNCTION_exit POP_ebx POP_ebx LOAD_IMMEDIATE_eax %1 INT_80 :FUNCTION_getchar LOAD_IMMEDIATE_eax %3 LOAD_IMMEDIATE_ebx %0 PUSH_ebx COPY_esp_to_ecx LOAD_IMMEDIATE_edx %1 INT_80 TEST POP_eax JUMP_NE8 !FUNCTION_getchar_Done LOAD_IMMEDIATE_eax %-1 :FUNCTION_getchar_Done RETURN :FUNCTION_malloc STORE_eax_into_ESP_IMMEDIATE8 !4 PUSH_eax LOAD_IMMEDIATE_eax %45 LOAD_IMMEDIATE_ebx %0 INT_80 POP_ebx ADD_eax_to_ebx PUSH_eax PUSH_ebx LOAD_IMMEDIATE_eax %45 INT_80 POP_ebx CMP POP_eax JUMP_EQ8 !FUNCTION_malloc_Done LOAD_IMMEDIATE_eax %-1 :FUNCTION_malloc_Done RETURN :FUNCTION_putchar LOAD_IMMEDIATE_eax %4 LOAD_IMMEDIATE_ebx %1 LOAD_EFFECTIVE_ADDRESS_ecx !4 COPY_ebx_to_edx INT_80 RETURN