From ce9e52469d0b12b3231ccc199e1b19bb924f54cd Mon Sep 17 00:00:00 2001 From: exegete Date: Fri, 16 Oct 2020 20:14:51 +0300 Subject: test module; top, as added --- ia32/core.sts | 2 ++ ia32/macro.sts | 18 ++++++++++++++++-- ia32/stack.sts | 4 ++++ ia32/syscall.sts | 2 +- 4 files changed, 23 insertions(+), 3 deletions(-) (limited to 'ia32') diff --git a/ia32/core.sts b/ia32/core.sts index fcb62ae..17b7d89 100644 --- a/ia32/core.sts +++ b/ia32/core.sts @@ -15,3 +15,5 @@ defasm lit # ad ?' ; lodsd # 50 ?' ; push eax next + +defconst word_size 4 diff --git a/ia32/macro.sts b/ia32/macro.sts index 3842a5c..5aa3b35 100644 --- a/ia32/macro.sts +++ b/ia32/macro.sts @@ -18,14 +18,19 @@ _docol # 4 ?+ ?. ] +[ defconst 2 + defasm %1% + # 68 ?' # %2% ?. ; push %2% + next +] + [ defarr 2 _data_segment ?choose ?$ ?? _%1%_arr # %2% # 4 ?* ?res _code_segment ?choose defasm %1% - ; push _%1%_arr - # 68 ?' _%1%_arr ?. + # 68 ?' _%1%_arr ?. ; push _%1%_arr next ] @@ -33,6 +38,15 @@ defarr %1% 1 ] +[ as 1 + _data_segment ?choose + defword %1% + lit ?$ # 0 ?. + exit + _code_segment ?choose + lit ?. ! +] + [ literal 0 lit # %1% ?. ] diff --git a/ia32/stack.sts b/ia32/stack.sts index 7756706..f3c8bab 100644 --- a/ia32/stack.sts +++ b/ia32/stack.sts @@ -1,3 +1,7 @@ +defasm top + # 54 ?' ; push esp +next + defasm get # 58 ?' ; pop eax # 8b ?' # 4 ?' # 84 ?' ; mov eax, [esp + 4 * eax] diff --git a/ia32/syscall.sts b/ia32/syscall.sts index 7ff7480..92d4d3a 100644 --- a/ia32/syscall.sts +++ b/ia32/syscall.sts @@ -5,7 +5,7 @@ defasm sys_exit ; no need in next since this is the last instruction _data_segment ?choose - ?$ ?? _iobuf # 0 ?' + ?$ ?? _iobuf # 0 ?. _code_segment ?choose defasm sys_read -- cgit v1.2.3