diff options
author | H. Peter Anvin <hpa@zytor.com> | 2019-02-26 14:00:54 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2019-02-26 14:00:54 -0800 |
commit | 8b262474424c0f6912b22bbf7452f26bfa4d1235 (patch) | |
tree | a40a21f2e346f65f71a24189fc8434dbd330a35b /test | |
parent | a8604c83fa8ece9859fb76b328b8753f549b8863 (diff) | |
download | nasm-8b262474424c0f6912b22bbf7452f26bfa4d1235.tar.gz nasm-8b262474424c0f6912b22bbf7452f26bfa4d1235.tar.xz nasm-8b262474424c0f6912b22bbf7452f26bfa4d1235.zip |
preproc: add %i... variants, evaluated macro parameters, cleanupsevalmacro
All directives which create single-line macros now have %i... variants
to define case-insensitive versions. Case insensitive rather sucks,
but at least this way it is consistent.
Single-line macro parameters can now be evaluated as a number, as done
by %assign. To do so, declare a parameter starting with =, for
example:
%define foo(x,=y) mov [x],macro_array_y
... would evaluate y as a number but leave x as a string.
NOTE: it would arguably be better to have this as a per-instance
basis, but it is easily handled by having a secondary macro called
with the same argument twice.
Finally, add a more consistent method for defining "magic" macros,
which need to be evaluated at runtime. For now, it is only used by the
special macros __FILE__, __LINE__, __BITS__, __PTR__, and __PASS__.
__PTR__ is a new macro which evaluates to word, dword or qword
matching the value of __BITS__.
The magic macro framework, however, provides a natural hook for a
future plug-in infrastructure to hook into a scripting language.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/evalmacro.asm | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/test/evalmacro.asm b/test/evalmacro.asm new file mode 100644 index 00000000..0dd668dd --- /dev/null +++ b/test/evalmacro.asm @@ -0,0 +1,4 @@ +%define tonum(=x) x + + dd tonum(1+3) + dd tonum(5*7) |