From: Keith Kanios on 6 Aug 2010 01:44 This is a preliminary announcement regarding the rewrite/revamp of the NASM preprocessor. This rewrite addresses issues with implementing recursive macros (%rmacro/%irmacro) as previously attempted, %exitmacro and also makes room for new directives. New NASM Directives: * %rmacro: Recursive Macro, can be called arbitrarily deep (really high limit [2^20] set to catch infinite loops.) * %irmacro: Same as above, except case-insensitive like %imacro. * %exitmacro: Terminates the current macro invocation, much like %exitrep; can be nested in other preprocessor directives (e.g. %if/ %endif) within the macro, with exception of another macro, of course. * %while/%endwhile/%exitwhile: A fusion between %rep and %if. * %comment/%endcomment: Comment block for long/multi-line comments. A little syntactic sugar, if you will. * %final: Causes rest of line after %final to be preprocessed after all other "normal" preprocessing is complete. Multiple %final directives work like the x86 stack, LIFO/FILO. This rewrite also attempts to address heavy/nested macro invocation efficiency issues. This rewrite is currently a branch [in GIT] called preprocessor- rewrite, and tentatively labeled as version 2.10rc1. Please note that NASM 2.09rc (official/main/master) is still going and NASM 2.09 should be released fairly soon. This rewrite has been known to accurately build all NASMX demos, along with a variety of other code snippets by various people. As positive/successful as this rewrite has been thus far, it is still a major change and we would like to catch as many bugs as possible before merging it into the main/master NASM code base. Please help us test this rewrite further by downloading/compiling the preprocessor-rewrite branch of the NASM source code, and testing it against your NASM code/snippets. Windows (Win32/MinGW) Binaries: http://www.asmcommunity.net/downloads/nasm/preproc-rewrite.zip (these binaries will be updated when new preproc-rewrite updates are made, along with a corresponding reply to this thread.) Source Download via Browser: goto http://repo.or.cz/w/nasm.git/shortlog/refs/heads/preproc-rewrite and click on the top-most tar.gz or zip "snapshot" link, decompress/ unarchive accordingly. Source Download via GIT: git clone git://repo.or.cz/nasm.git preproc-rewrite cd ./preproc-rewrite git checkout origin/preproc-rewrite Compiling on MacOSX/FreeBSD/Linux/et al.: (assumes you are in the preproc-rewrite directory of the downloaded source) autoheader autoconf ../configure make Shell Script for GIT Download + Compiling on MacOSX/FreeBSD/Linux/etc al.: #!/bin/sh git clone git://repo.or.cz/nasm.git preproc-rewrite cd ./preproc-rewrite git checkout origin/preproc-rewrite autoheader autoconf ../configure make If you are comfortable enough with making this branch of NASM your primary binary on MacOSX/FreeBSD/Linux/et al., follow the above compile instructions with: sudo make install If there are any questions/comments/corrections/concerns, please reply to this thread. Thanks. -Keith
From: Keith Kanios on 6 Aug 2010 08:03 Update: Fixed a bug regarding the emission of labels that immediately precede macro invocations. The new source/binaries are available, and can be found as instructed in the initial post. Note: The latest x264 source successfully builds and passes checkasm with this preprocessor rewrite of NASM.
From: Keith Kanios on 9 Aug 2010 02:31 Update: Fixed line number handling.
From: Keith Kanios on 10 Aug 2010 00:35 Update: Fixed macro-relative line number handling for %warning/%error/ %fatal/etc. This update, combined with the general preprocessor redesign, now allows for %warning/%error/%fatal lines within %rep blocks, that are nested within macros, to correctly emit the exact macro-relative line number. Update: Context-local labels will no longer implicitly search upper/ outer contexts in the case of undefined labels. This feature was added in NASM 0.98.03, and is now being removed due to its unintuitive and error-prone design. There will be a deprecation warning for "usage" of this feature in the NASM 2.09. For NASM 2.10 and beyond, relying on this context-local label fallthrough will simply generate an expression syntax error. If you rely on this soon-to-be deprecated feature, please take this time to adjust your code, accordingly. Note: The Win32 Binaries link has changed: http://www.nasm.us/downloads/preproc-rewrite.zip
From: wolfgang kern on 10 Aug 2010 14:50 Keith Kanios posted: > Update: Fixed macro-relative line number handling for %warning/%error/ > %fatal/etc. This update, combined with the general preprocessor > redesign, now allows for %warning/%error/%fatal lines within %rep > blocks, that are nested within macros, to correctly emit the exact > macro-relative line number. > Update: Context-local labels will no longer implicitly search upper/ > outer contexts in the case of undefined labels. This feature was added > in NASM 0.98.03, and is now being removed due to its unintuitive and > error-prone design. There will be a deprecation warning for "usage" of > this feature in the NASM 2.09. For NASM 2.10 and beyond, relying on > this context-local label fallthrough will simply generate an > expression syntax error. If you rely on this soon-to-be deprecated > feature, please take this time to adjust your code, accordingly. > Note: The Win32 Binaries link has changed: > http://www.nasm.us/downloads/preproc-rewrite.zip Ok Keith, this may help a lot of users which like abstraction by macros ... For me personally every abstraction will hide what's really going on on a machine and macros may often fool beginners. So, using macros should be way apart from teaching newbies. Please don't see my notes as offending, You actually created/modified a very useful tool once named NASM :) for a horde of satisfied users. __ wolfgang
|
Next
|
Last
Pages: 1 2 Prev: EARN AMAZING COMMISIONS FROM ONLINE CPA NETWORK NO INVESTMENT Next: test |