Finished todo on importing another file
This commit is contained in:
78
todo.org
78
todo.org
@@ -19,45 +19,6 @@
|
||||
Like in FASM or NASM where we can give certain helpful instructions to
|
||||
the assembler. I'd use the ~%~ symbol to designate preprocessor
|
||||
directives.
|
||||
** WIP Import another file
|
||||
Say I have two "asm" files: /a.asm/ and /b.asm/.
|
||||
|
||||
#+CAPTION: a.asm
|
||||
#+begin_src asm
|
||||
global main
|
||||
main:
|
||||
push.word 1
|
||||
push.word 1
|
||||
push.word 1
|
||||
sub.word
|
||||
sub.word
|
||||
call b-println
|
||||
halt
|
||||
#+end_src
|
||||
|
||||
#+CAPTION: b.asm
|
||||
#+begin_src asm
|
||||
b-println:
|
||||
print.word
|
||||
push.byte '\n'
|
||||
print.char
|
||||
ret
|
||||
#+end_src
|
||||
|
||||
How would one assemble this? We've got two files, with /a.asm/
|
||||
depending on /b.asm/ for the symbol ~b-println~. It's obvious they
|
||||
need to be assembled "together" to make something that could work. A
|
||||
possible "correct" program would be having the file /b.asm/ completely
|
||||
included into /a.asm/, such that compiling /a.asm/ would lead to
|
||||
classical symbol resolution without much hassle. As a feature, this
|
||||
would be best placed in the preprocessor as symbol resolution occurs
|
||||
in the third stage of parsing (~process_presults~), whereas the
|
||||
preprocessor is always the first stage.
|
||||
|
||||
That would be a very simple way of solving the static vs dynamic
|
||||
linking problem: just include the files you actually need. Even the
|
||||
standard library would be fine and not require any additional work.
|
||||
Let's see how this would work.
|
||||
** TODO Macros
|
||||
Essentially constants expressions which take literal parameters
|
||||
(i.e. tokens) and can use them throughout the body. Something like
|
||||
@@ -243,3 +204,42 @@ memory to use in the stack).
|
||||
2024-04-09: Found the ~hto_e~ functions under =endian.h= that provide
|
||||
both way host to specific endian conversion of shorts, half words and
|
||||
words. This will make it super simple to just convert.
|
||||
** DONE Import another file
|
||||
Say I have two "asm" files: /a.asm/ and /b.asm/.
|
||||
|
||||
#+CAPTION: a.asm
|
||||
#+begin_src asm
|
||||
global main
|
||||
main:
|
||||
push.word 1
|
||||
push.word 1
|
||||
push.word 1
|
||||
sub.word
|
||||
sub.word
|
||||
call b-println
|
||||
halt
|
||||
#+end_src
|
||||
|
||||
#+CAPTION: b.asm
|
||||
#+begin_src asm
|
||||
b-println:
|
||||
print.word
|
||||
push.byte '\n'
|
||||
print.char
|
||||
ret
|
||||
#+end_src
|
||||
|
||||
How would one assemble this? We've got two files, with /a.asm/
|
||||
depending on /b.asm/ for the symbol ~b-println~. It's obvious they
|
||||
need to be assembled "together" to make something that could work. A
|
||||
possible "correct" program would be having the file /b.asm/ completely
|
||||
included into /a.asm/, such that compiling /a.asm/ would lead to
|
||||
classical symbol resolution without much hassle. As a feature, this
|
||||
would be best placed in the preprocessor as symbol resolution occurs
|
||||
in the third stage of parsing (~process_presults~), whereas the
|
||||
preprocessor is always the first stage.
|
||||
|
||||
That would be a very simple way of solving the static vs dynamic
|
||||
linking problem: just include the files you actually need. Even the
|
||||
standard library would be fine and not require any additional work.
|
||||
Let's see how this would work.
|
||||
|
||||
Reference in New Issue
Block a user