diff --git a/src/string-allocation.asm b/src/string-allocation.asm new file mode 100644 index 0000000..3ec2b55 --- /dev/null +++ b/src/string-allocation.asm @@ -0,0 +1,169 @@ +; Assembly code emitted by HLA compiler +; Version 2.16 build 4413 (prototype) +; HLA compiler written by Randall Hyde +; NASM compatible output + + bits 32 + +%define ExceptionPtr__hla_ [dword fs:0] + + + global QuitMain__hla_ + global DfltExHndlr__hla_ + global _HLAMain + global HWexcept__hla_ + global start + + +section .text code align=16 + + + extern STDIN_FLUSHINPUT + extern STR_ALLOC1 + extern STDOUT_NEWLN + extern DefaultExceptionHandler__hla_ + extern abstract__hla_ + extern HardwareException__hla_ + extern STDIN_GETS + extern BuildExcepts__hla_ + extern STDOUT_PUTS + extern Raise__hla_ + extern shortDfltExcept__hla_ + + + + + + +section .text + + + + +;/* HWexcept__hla_ gets called when Windows raises the exception. */ + + +; procedure HWexcept__hla_ + +HWexcept__hla_: + jmp HardwareException__hla_ +;HWexcept__hla_ endp + + +; procedure DfltExHndlr__hla_ + +DfltExHndlr__hla_: + jmp DefaultExceptionHandler__hla_ +;DfltExHndlr__hla_ endp + + + + +; procedure _HLAMain + +_HLAMain: + nop + + +; procedure start + +start: +;start endp + + call BuildExcepts__hla_ +; push dword 0 + db 06ah ; + db 00h ; +; push ebp + db 055h ; +; push ebp + db 055h ; +; lea ebp, [esp+4] + db 08dh ; + db 06ch ; + db 024h ; + db 04h ; + + +; push dword 16 + db 06ah ; + db 010h ; + call STR_ALLOC1 +; mov [strExample__hla_1885], eax + db 0a3h ; + dd (strExample__hla_1885+0) +; push strict dword str__hla_1889 + db 068h ; + dd str__hla_1889 + call STDOUT_PUTS + call STDIN_FLUSHINPUT +; push dword [strExample__hla_1885] + db 0ffh ; + db 035h ; + dd strExample__hla_1885 + call STDIN_GETS +; push strict dword str__hla_1890 + db 068h ; + dd str__hla_1890 + call STDOUT_PUTS +; push dword [strExample__hla_1885] + db 0ffh ; + db 035h ; + dd strExample__hla_1885 + call STDOUT_PUTS + call STDOUT_NEWLN +QuitMain__hla_: +; push dword 0 + db 06ah ; + db 00h ; +; call [__imp__ExitProcess@4] + db 0ffh ; + db 015h ; + dd __imp__ExitProcess@4 +;_HLAMain endp + + + + + + + + + +section .text + + + align (4) +len__hla_1889 dd 024h + dd 024h +str__hla_1889: + db "Type some text (max 16 characters): " + db 0 + + db 0 + db 0 + db 0 + + align (4) +len__hla_1890 dd 03h + dd 03h +str__hla_1890: + db "-> " + db 0 + + + + + +section .data data align=16 + + extern MainPgmCoroutine__hla_ + extern __imp__MessageBoxA@16 + extern __imp__ExitProcess@4 + align (4) +strExample__hla_1885 times 4 db 0 + + + + + diff --git a/src/string-allocation.hla b/src/string-allocation.hla new file mode 100644 index 0000000..d6fc281 --- /dev/null +++ b/src/string-allocation.hla @@ -0,0 +1,16 @@ +program StringAllocationDemo; +#include("stdlib.hhf") + +static + strExample: string; +begin StringAllocationDemo; + + str.alloc(16); + mov(eax, strExample); + + stdout.put("Type some text (max 16 characters): "); + stdin.flushInput(); + stdin.gets(strExample); + + stdout.put("-> ", strExample, nl); +end StringAllocationDemo; \ No newline at end of file