a56 - a DSP5600X assembler - version 1.3 /* * Copyright (C) 1990-1998 Quinn C. Jensen * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. The author makes no representations * about the suitability of this software for any purpose. It is * provided "as is" without express or implied warranty. * */ V1.3 CHANGES - Added intrinsic transcendental functions for constant literal expressions (pi, sin, cos, tan atan, asin, acos, exp, ln, log, pow) - Added warnings for control register load/use hazards - More sophisticated constant expression evaluation including implicit float/integer conversion. Results of expressions are typed and so formatted in the listing and symbol table. - Various fixes including stray pointers, etc. (Thanks to Dirk Farin farindk@trick.informatik.uni-stuttgart.de) Known bugs/deficiencies: - MOVE to a control reg generates bogus code (always use MOVEC, MOVEM, and MOVEP) Wish list - Add support for new instructions and modes --------------------------------------------------------------------------- OVERVIEW This program was written as a vehicle to learn the intricacies of the DSP56001 instruction set, and to provide a tool for Unix-based DSP code development (for those of us without a NeXT machine.) The intent was to provide compatibility with Motorola assembler's syntax. But since the author did not have Motorola's assembler or its documentation, it is no doubt far from compatible. Only a few pseudo-ops are implemented-- probably only partially. Macros are not supported, except through the use of an external macro preprocessor, such as /lib/cpp. To facilitate cpp macro expansion, multiple assembler statements on a single input line are delimited with an '@', e.g.: #define JCHEQ(c,label) move #c,x0 @cmp x0,a @jeq label #define JCHNE(c,label) move #c,x0 @cmp x0,a @jne label SUPPORTED PSEUDO-OPS The following is a list of the pseudo-ops that are recognized: = ;assign a symbol