home *** CD-ROM | disk | FTP | other *** search
- About !ASM
- ----------
-
- !ASM is an advanced ARM code assembler with none of the limits imposed on
- you as you would find using BASIC assembler, !AAsm or !ObjAsm. New features
- include:
-
- Support for floating point instructions
- Local labels
- ADR can address a 2-gigabyte range (should be enough...)
- LDR can do that also, as can STR, STF and LDF...
- All data processing instructions can take any constant
- A full expression parser (not new over BASIC, but a rarity nonetheless.)
- Proper ordering of operations (brackets, +-*/, etc etc)
- Can tell the difference between SWIs and labels
- Has 'fast mode' if no parsing required
- Structures
- Very flexible macro support
- Nice wimp front end
- Can output in AIF format
- Can use throwback
- Default header can be automatically included and assembled at start of
- process
- A smiley for those that like these things.
-
- There are three stages to assembling any program:
-
- 1. The PreProcessor. This collects any #included file, and processes the
- various preprocessor instructions (those that begin with '#').
- 2. The MacroScanner. This finds all the macros and defines references to
- them.
- 3. The multi-pass assembler. Due to the ability to auto-expand labels, the
- assembler can take large numbers of passes in order to create meaningful
- code. The minimum is two passes...
-
- BASIC assembler code translates very well into !ASM assembler code, because
- the syntax is designed to be the same (!extASM code also translates very
- well, seeing as !ASM is based around it). In fact, the only real difference
- is that you no longer need the BASIC bits at the start and end, and the file
- is pure text. !ASM can do almost everything that you would want from the
- BASIC assembler, and one or two things that BASIC could never do...
-
- !ASM consists, basically, of the assembler itself, written in C, and the
- front-end, written in BASIC. The assembler is compiled from about 4000 lines
- of source code (wow...) into a 58k executable using Beebugs rather excellent
- Easy C++. (The code itself is actually C, due to implementation differences
- in structs). The front end uses the task window module in order to multitask
- the single tasking ASM code, producing a nice window at the end where you
- can view the output.
-
-