A
ASSEMBLER ERROR MESSAGES
1 Introduction
The assembler produces error messages on standard error output. If
the list option of the assembler is effective, error messages will be included
in the list file as well, when the assembler has started list file generation.
Error messages have the following layout:
[E|F|W] error_number: filename line
number : error_message
Example:
as56
E217:
/tmp/tst.src line 17 : invalid parallel move
The example reports the error, starting with the severity (E: error,
F: fatal error, W: warning) and the error number followed by the source filename and the line number. The last part of the line shows the error message text.
All
warnings (W),
errors (E), and fatal errors (F) are described below.
2 Warnings (W)
The assembler may generate the following warnings:
W 101: ignored "MODE" directive
The MODE directive is not supported by the DSP56xxx
assembler.
The assembler always produces relocatable code, except when in an absolute section. See the section Software Concept for more information.
W 102: duplicate attribute "attribute" found
An attribute of an EXTERN or an ORG directive is used twice or more. Remove one of the duplicate attributes.
W 103: overlay part of "ORG" directive not supported
The TASKING DSP56xxx
assembler
does not support the overlay part of the ORG directive. You can use the locator lc56 to overlay sections. Remove the overlay definition.
W 104: "SECTION" attributes ignored
The TASKING DSP56xxx
assembler
does not support scope-section attributes. All labels defined inside any scope-section are handled
as if they were defined using the LOCAL directive, unless they are defined using the EXTERN or GLOBAL directive. Sections are not located according to their scope, but according the ORG directives. See the section Software Concept for more information. Remove the SECTION attributes.
W 105: no "ORG" found yet
Data and program code can only be defined after an ORG directive is used. When a definition is found before an ORG directive is found
it will be inserted in a nameless, relocatable P: section. Insert an
ORG directive before the offending line.
W 106: conflicting attributes specified "attributes"
You used two conflicting attributes in an EXTERN or an ORG statement directive. For example EXTERN and INTERN. Choose which one you want to use and remove the other.
W 107: memory conflict on object "name"
A label or other object is explicit or implicit defined using incompatible memory types. For example P: and X: memory. Check all usages and definitions of the object name to remove this conflict.
W 108: object attributes redefinition "attributes"
A label or other object is explicit or implicit defined using incompatible attributes. For example INTERN and EXTERN. Check all usages and definitions of the object to remove the conflict.
W 109: label "label" not used
The label label is defined with the GLOBAL directive
and neither defined nor referred, or the label is defined with the LOCAL directive and not referenced. You can remove this label and its definitions
(in the case of a LOCAL label).
W 110: extern label "label" defined in module,
made global
The label label is defined with an EXTERN directive
and defined as a label in the source. The label will be handled as a global label.
Change the EXTERN definition into GLOBAL or one of the identifiers.
W 111: named section overrules location counter
A named section may not have a location counter. The location counter is ignored. For example:
ORG P1,".text":
is illegal. Remove the location counter number.
W 112: text found after END, ignored
An END directive designates the end of the source file. All text after
the END directive will be ignored. Remove the text.
W 113: named section overrules map attribute
Named sections may not have a mapping ('I', 'E', 'R', 'A' and 'B') definition. Use the attribute-names (INTERN and EXTERN) instead. For example:
ORG PI,".text":
ORG P,".text",INTERN:
W 114: immediate io-short operand not allowed, forced
to long
An io-short operator cannot be used in combination with immediate values. The illegal '#<<' operator is changed into a '#>' operator.
W 116: invalid force argument, only NEAR, FAR or NONE allowed
The FORCE and SCSJMP directive only accept NEAR, FAR and NONE as their arguments. Check the supplied argument and change it into one of these.
W 117: reverse-carry buffer and ALIGN directive size expected
to be a power of 2
The DSR, BUFFER, BADDR and ALIGN directives only accept sizes which are a power of two. For example: 32 and 128 are valid parameters while 250 is invalid. Check the argument you supplied to the directive and change it in a usable power of two.
W 118: inserted "extern name"
The symbol name is used inside an expression, but
not defined with an EXTERN directive or defined in the current scope. The assembler inserts an EXTERN definition of the offending symbol. Check your label scoping or add an EXTERN definition. You can suppress this message with the 'OPT UR' directive.
W 120: assembler debug information: cannot emit non-tiof expression for label
The SYMB record contains an expression with operations that are not supported by the IEEE-695 object format. When the SYMB record is generated by the TASKING C compiler, please fill out the error report and send it to TASKING.
W 121: XDEF interpreted as GLOBAL
The TASKING DSP56xxx assembler changes all XDEF directives into GLOBAL directives. As the semantics of both directives are slightly different the assembler will emit this warning when an XDEF directive is found. Change all XDEF directives to GLOBAL.
W 122: XREF interpreted as EXTERN
The TASKING DSP56xxx assembler changes all XREF directives into EXTERN directives. As the semantics of both directives are slightly different the assembler will emit this warning when an XREF directive is found. Change all XREF directives to EXTERN.
W 123: expression: type-error
The expression performs an illegal operation on an address or combines incompatible memory spaces. Check the expression, and change it. Use the @CVS() function to change memory types. You can suppress this message with the 'OPT NOAE' directive.
W 124: memory space modifier unequal to memory space of expression
The memory space modifier used in combination with the expression
is not equal to the memory space of the expression result. For example:
jmp p:x_label
Check the memory types of the operands, or use the @CVS() function to change the resulting memory space.
W 125: "symbol" is not a DEFINE symbol
You tried to UNDEF a symbol that was not previously DEFINEd or was already undefined. Check all DEFINE/UNDEF combinations of the offending symbol.
W 126: redefinition of "define-symbol"
The symbol is already DEFINEd in the current scope. The symbol is redefined according to this DEFINE. UNDEF any symbol before redefining it.
W 127: redefinition of macro "macro"
The macro is already defined. The macro is redefined according to
this macro definition. Purge any macro using PMACRO before redefining it.
W 128: number of macro arguments is less than definition
You supplied less arguments to the macro than when defining it. Check your macro definition with this macro call. The undefined macro arguments are left empty (as in DEFINE def '').
W 129: number of macro arguments is greater than definition
You supplied more arguments to the macro than when defining it. Check your macro definition with this macro call. The superfluous macro arguments are ignored.
W 130: DUPA needs at least one value argument
The DUPA directive needs at least two arguments, the dummy parameter and a value parameter. Add one or more value-parameters.
W 131: DUPF increment value gives empty macro
The step value supplied with the DUPF macro will skip the DUPF macro body. Check the step value.
W 132: IF started in previous file "file", line
line
The ENDIF or ELSE pre-processor directive matches with an IF directive in another file. Check on any missing ENDIF or ELSE directives in that file.
W 133: currently no macro expansion active
The @CNT() and @ARG() functions can only be used inside a macro expansion. Check your macro definitions or expression.
W 134: "directive" is not supported, skipped
The directives COBJ, HIMEM, IDENT, LOMEM, LSTCOL, MACLIB, MODE, RDIRECT and SYMOBJ are not supported by the TASKING DSP56xxx
assembler.
Remove all uses of these directives.
W 135: define symbol of "define-symbol" is not
an identifier; skipped definition
You supplied an illegal identifier with the -D option
on the command line. An identifier should start with a letter, followed by any number
of letters, digits or underscores.
W 136: expression value outside of fractional domain
The expression resulted in a floating point number less than -1 or greater or equal to 1. The resulting number is saturated.
W 137: label "label" defined attribute
and attribute
The label is defined with an EXTERN and a GLOBAL directive. The EXTERN directive is removed, leaving the label global.
W 138: warning: WARN-directive-arguments
Output from the WARN directive.
W 139: inserted NOP instruction(s) to remove restriction
The assembler inserted a NOP instruction to accomodate for a pipeline delay. For example:
move a,ssh
rts
move a,ssh
NOP
rts
You can toggle the automatic NOP insertion with the OPT directive
and on the command line.
W 140: previous instruction sequence may have a pipeline effect
The previous instruction may need to have a NOP instruction between them or, in the case of end of DO loop restrictions, after them.
W 141: gobal/local label "name"
not defined in this module; made extern
The label is declared and used but not defined in the source file.
Check the current scope of the label and its usage, change the declaration
to EXTERN or add a label definition.
W 142: DO loop target is not a label, cannot check nesting and
range
The assembler checks the nesting and range of DO-loops. This cannot be done when the target expression of a DO instruction is not a label. Change the source to use labels instead of address expressions.
W 143: conditional branches to LA are illegal when loop flag is
set
This warning is given with Bcc and Jcc branches to LA when the option -m0 (mask 0F92R and 1F92R) for the DSP563xx assembler (as563) is specified.
W 144: missing label for VOID directive; skipped directive
The VOID directive must be preceded by a label.
W 145: more than one cache alignment for this section; changed
into "align number"
Only one "align cache" may be given per section. When more alignments are needed they can be forced with an align directive, specifying the cache page size as alignment. In code sections the
align directive generates NOP instructions to pad the created gap.
W 146: cache alignment may change absolute section origin
The "align cache" creates a gap at the start of the section to force
the next instruction on a cache boundary. This gap is placed before any other part of the section. Therefore, the real section start is at
another address than specified with the ORG directive.
W 147: external symbol "name" is used with different
memory spaces; assuming equate symbol
This is an external which is used with different memory spaces. Assume that it is an equate symbol and tell the user about it. This
will not generate a linker warning.
W 148: unrecognized OPT directive "option" ignored
Something behind an opt. Whatever is typed there is not recognized.
3 Errors (E)
The assembler generates the following error messages when a user error situation occurs. These errors do not terminate assembly immediate.
If one or more of these errors occur, assembly stops at the end of the active
pass.
E 200: message; halting assembly
The assembler stops the further processing of your source file. This
is only an informative message. Remove all errors reported earlier and
try again.
E 201: unexpected newline or line delimiter
E 202: unexpected character ( 'character' )
The syntax checker found a character that does not confirm to the assembler grammar. Check the line for syntax errors or remove the offending character.
E 203: illegal escape character in string constant
E 205: syntax error: missing token before token
The syntax checker expected to find a token but found another token. The missing token is inserted before the found token. Check the line for syntax errors.
E 206: syntax error: token unexpected
The syntax checker found an unexpected token. The offending token is removed from the input and assembling continues. Check the line for syntax errors.
E 207: syntax error: missing ':'
The syntax checker found a label definition or memory space modifier but missed the appended semi-colon. Check the line for syntax errors, for example misspelled mnemonics.
E 208: syntax error: missing ')'
The syntax checker expected to find a closing parentheses. Check the expression syntax for missing operators and nesting of parentheses.
E 209: invalid radix value, should be `2, `10 or `16
The RADIX directive accepts only 2, 10 or 16.
E 210: syntax error
The syntax checker found an error. Check the line for syntax errors.
E 211: cannot open scope
The given scope-section could not be started. Check the name you supplied with the SECTION directive.
E 212: cannot close scope
The ENDSEC directive could not match with a corresponding SECTION directive. Check your scope nesting.
E 213: label "label" defined attribute
and attribute
The label is defined with a LOCAL and a GLOBAL or EXTERN directive. Check your label scoping or change the label declarations.
E 214: illegal addressing mode
The mnemonic used an illegal addressing mode. Check the register usage of address constructs.
E 215: not enough operands
The mnemonic needs more operands. Check the source line and change the instruction.
E 216: too many operands
The mnemonic needs less operands. Check the source line and change the instruction.
E 217: description
There was an error found during assembly of the mnemonic. Check the instruction.
E 218: register must be an Rn register
You supplied a register that is not one of R0-R7. Check the instruction.
E 219: register Nn must have same number as Rn
When using (Rn)+Nn, (Rn+Nn) or (Rn)-Nn constructs, the R and the N register must have the same number.
E 220: must be an Rn/Nn register pair
When using (reg1)+reg2, (reg1+reg2) or (reg1)-reg2
constructs, reg1 must be one of R0-R7 and reg2 must be the corresponding
N register.
E 221: multiple scopes with same name
You nested two scope-sections with the same name. Check to see if you didn't forget to close a scope.
E 222: scope not closed
After assembling your entire source the assembler missed some ENDSEC directives. Check all SECTION directives if they have a corresponding ENDSEC directive.
E 224: unknown label "label"
The underscore label was used but not defined within the scope of
its usage. Check the usage and scope. Try changing the label to a non-underscore label.
E 225: invalid memory type
You supplied an invalid memory modifier with an ORG directive. Check the first character of the offending ORG.
E 226: "E"-memory not supported
The TASKING DSP5600x
assembler
currently does not support E-memory.
E 227: invalid memory attribute
The assembler found an unknown location counter or memory mapping attribute in an ORG directive.
E 228: more than one location counter
You may only specify one location counter with an ORG directive. Check to see if you specified both 'L' or 'H' and a numbered counter.
E 229: location counter must be between 0 and 255
Only 256 different location counters are supported. Change the counter.
E 230: invalid section attribute
The assembler found an unknown ORG attribute. Valid attributes are EXTERN, INTERN, NEAR, FAR, BSS, SCRATCH, OVERLAY, ABSOLUTE, SCRATCH and MAX.
E 231: absolute section, expected expression
When defining an absolute section, you must supply an address-expression after the colon.
E 232: MAX/OVERLAY sections need to be named sections
Sections with the MAX or OVERLAY attribute must have a name.
E 233: code section cannot have attribute attribute
Code sections may not have the OVERLAY attribute.
E 234: section attributes do not match earlier declaration
In an previous definition of the same section other attributes were used. Check all section definitions with the same name, try to give
only the first ORG of a section all attributes, the later usages only the memory modifier and the name.
E 235: redefinition of absolute section
An absolute section of the same name can only be located once.
E 236: cannot evaluate expression of descriptor
Some functions and directives must evaluate their arguments during assembly. Change the expression so that it can be evaluated.
E 237: descriptor directive must have
positive value
Some directives need to have a positive argument. Check the expression so that is evaluates to a positive number.
E 238: Floating point numbers not allowed with DCB directive
The DCB directive does not accept floating point numbers. Convert
the expressions or use the DC directive instead.
E 239: DCB byte constant out of range
The DCB directive stores expressions in bytes. A byte can only hold numbers between 0 and 255.
E 240: DC word constant out of range
The DC directive stores expressions in words. A word can hold 24 bit numbers in X, Y and P space. And 48 bits in L space. Check the range of the expression.
E 241: Cannot emit non tiof functions, replaced with integral
value '0'
Floating point expressions and some functions can not be represented in the IEEE-695 object format. When an expression contains unknown symbols it cannot be evaluated and not emitted to the object file. Change these expressions to integral expressions, or make sure they can be evaluated during assembly.
E 242: directive directive type must be M(odulo)
or R(everse-carry)
The BADDR and BUFFER directives define modulo and reverse carry buffers. Check the arguments you supplied to these directives.
E 243: Nested buffers not permitted
BUFFER directives may not be nested. Check to see if you didn't forget an ENDBUF directive.
E 244: ENDBUF without an BUFFER directive
The assembler found an ENDBUF directive without a corresponding BUFFER directive.
E 245: BUFFER size exceeded
There allocated space between the BUFFER and the ENDBUF command exceeds the defined size of the BUFFER.
E 246: Missing ENDBUF, did you forget to end a buffer?
At the end of the source file a BUFFER directive is still not closed. Check all BUFFER directives.
E 247: illegal condition code
The assembler encountered an illegal condition code within an instruction. Check your input line.
E 248: cannot evaluate origin expression of org "name:
address"
All origins of absolute sections must be evaluated before creation
of the object file. Check the address expression on the usage of undefined
or location dependant symbols.
E 249: incorrect argument types for function "function"
The supplied argument(s) evaluated to a different type than expected. Change the argument expressions to the correct type.
E 251: @POS(,,start) start argument past end of
string
The start argument is larger than the length of the
string in the first parameter. Change start to the correct range.
E 252: second definition of label "label"
The label is defined twice in the same scope. Check the label definitions and rename of remove duplicate definitions.
E 253: recursive definition of symbol "symbol"
The evaluation of the symbol depends on its own value. Change the symbol value exclude this cyclic definition.
E 254: missing closing '>' in include directive
The syntax checker missed the closing '>' bracket in the include directive. Add a closing '>'.
E 255: could not open include file include-file
The assembler could not open the given include-file. Check the current search path for the presence of the include file and if it may be
read.
E 256: integral divide by zero
The expression contains an divide by zero. This is not defined. Change the expression to exclude a division by zero.
E 257: unterminated string
All strings must end on the same line as they are started. Check for
a missing ending quot.
E 258: unexpected characters after macro parameters, possible
illegal white space
Spaces are not permitted between macro parameters. Check the syntax of the macro call.
E 259: COMMENT directive not permitted within a macro definition
and conditional assembly
The TASKING DSP56xxx
assembler
does not permit the usage of the COMMENT directive within MACRO/DUP definitions or IF/ELSE/ENDIF constructs. Replace the offending COMMENTs with comments starting with a semicolon.
E 260: definition of "macro" unterminated, missing
"endm"
The macro definition is not terminated with an ENDM directive. Check the macro definition.
E 261: macro argument name may not start with an '_'
MACRO and DUP arguments may not start with an underscore. Replace the offending parameter names with non-underscore names.
E 262: cannot find "symbol" in current scope nesting
Could not find a definition of the argument of a '%' or '?' operator within a macro expansion. Check for a definition of the offending symbol.
E 263: cannot evaluate: "symbol", value is unknown
at this point
The symbol used with a '%' or '?' operator within a macro expansion has not been defined. Insert a definition of the offending identifier.
E 264: cannot evaluate: "symbol", value depends
on an unknown symbol
Could not evaluate the argument of a '%' or '?' operator within a
macro expansion. Check the definition of the offending symbol.
E 265: cannot evaluate argument of dup (unknown
or location dependant symbols)
The arguments of the DUP directive could not be evaluated. Check the argument expressions on forward references or unknown symbols.
E 266: dup argument must be integral
The argument of the DUP directive must be integral. Change the expression so that it evaluates to an integral number.
E 267: dup needs a parameter
Check the syntax of the DUP directive.
E 268: ENDM without a corresponding MACRO or DUP definition
The assembler found an ENDM directive without an corresponding MACRO or DUP definition. Check the macro and dup definitions or remove this directive.
E 269: ELSE without a corresponding IF
The assembler found an ELSE directive without an corresponding IF directive. Check the IF/ELSE/ENDIF nesting or remove this directive.
E 270: ENDIF without a corresponding IF
The assembler found an ENDIF directive without an corresponding IF directive. Check the IF/ELSE/ENDIF nesting or remove this directive.
E 271: missing corresponding ENDIF
The assembler found an IF or ELSE directive without an corresponding ENDIF directive. Check the IF/ELSE/ENDIF nesting or remove this directive.
E 272: label not permitted with this directive
Some directives do not accept labels. Move the label to a line before
or after this line.
E 273: wrong number of arguments for function
The function needs more or less arguments. Check the function definition and add or remove arguments.
E 274: illegal argument for function
An argument has the wrong type. Check the function definition and change the arguments accordingly.
E 275: parallel moves are not permitted with this instruction
The instruction does not accept parallel moves. You can use the optimizer to parallelize moves.
E 276: immediate value must be between value
and value
The immediate operand of the instruction does only accept values in the given range. Use the '&' operator to force a value within the needed range or use '#>' to force a long immediate operand.
E 277: address must be between $address and $address
The address operand is not in the range mentioned. Use the '>' prefix operator to force long addressing or change the address expression.
E 278: operand must be an address
The operand must be an address but has no address attributes. Use
an address modifier (e.g. 'X:') or change the address expression.
E 279: address must be short
The operand must be an address in the short range. The expression evaluated to a long address or an address in an unknown range. For the DSP56xxx
the addresses
between and including P:$0000 and P:$0FFF and for X, Y and L memory $0000 and $003F are in the short range. Use the '<' prefix operator to force the address to a short address or change the address expression.
E 280: address must be short or I/O short
The operand must be an address in the I/O short range. For the DSP5600x the addresses between and including X:$FFC0 and X:$FFFF are legal I/O short addresses. For the DSP563xx the addresses between and including X:$FFFF80 and X:$FFFFFF are legal i/o short addresses. Change the address expression or use the '<<' prefix operator to
force the address to the correct I/O short range.
E 281: illegal option "option"
The assembler found an unknown or misspelled command line option. The option will be ignored. Use the -? option to see
a list of all possible options.
E 282: operand must be a Rn or Nn register
An operand of the instruction must be one of the register R0-R7 or N0-N7. Check the instruction and change the operand.
E 283: operand number must be register
register
The referred instruction operand must be one of the mentioned registers. Check the instruction and change its register usage accordingly.
E 284: source and destination must be different
The ADD, SUB, CMP, CMPM, TFR, SUBL, ADDL, SUBR and ADDR instructions must have different source and destination operands. Check the instruction and change one of the operands.
E 285: file-kind file will overwrite file-kind file
The assembler warns when one of its output files will overwrite the source file you gave on the command line or another output file. Change the name of the source file, use the -o option
to change the name of the output file or remove the -err option
to suppress the generation of the error file.
E 286: IC and NOIC options must be given before any symbol definition
The ignore case parameters of the OPT directive may only be given before any symbol is defined. Move the options to the start of the
first source file.
E 287: SYMB error: message
The assembler found an error in a symbolic debug (SYMB) instruction. When the SYMB instruction is generated by the TASKING C compiler, please fill out the error report form and send it to TASKING. As a
work around you could disable the symbolic debug information of this module (remove the -g option).
E 288: error in PAGE directive: message
The arguments supplied to the PAGE directive do not conform to the restrictions. Check the PAGE directive restrictions in the manual
and change the arguments accordingly.
E 289: error in ORG directive
This is an illegal ORG directive or the section name has been used
for another, incompatible, section. Check the ORG arguments and the section name.
E 290: fail: message
Output of the FAIL directive. This is an user generated error. Check
the source code to see why this FAIL directive is executed.
E 291: generated check: message
Integrity check for the coupling between the TASKING C compiler and TASKING DSP56xxx
assembler.
You should not see this error message, unless there are error in user inserted assembly (using the "#pragma asm" construct).
E 292: no "ORG" found yet
This error is only generated as part of the integrity checks for the output of the TASKING C compiler. You should not see this error message, unless there are error in user inserted assembly (using the "#pragma asm" construct).
E 293: expression not in short or I/O short range
An instruction operand must be in the short ($000 through $003F) or I/O short ($FFC0 through $FFFF) address range (for the DSP563xx address range $FFF80 through $FFFFFF). Check the address expression, change it or use the '<' or '<<' operators to force the operand
to the expected type.
E 294: illegal instruction sequence
The previous two instructions may not be executed directly after each other. Insert another instruction or a NOP instruction between them.
E 295: optimizer error: message
The optimizer found an error. Try to change the instruction or turn
off the the optimizer.
E 296: duplicate destinations are not allowed
An instruction may not have a double write to the same destination register. Change the destination registers or split the instruction
in separate moves.
E 297: negative or empty DO loops are not allowed
A DO loop must contain instructions and have an loop address that
is after the DO instruction. Insert a NOP in the DO loop body, or change the loop label.
E 298: improper nesting of do loop
When DO loops are nested they must be completely contained inside the outer DO loop.
E 299: jump address must be P in memory
Jumps, jump-subroutines and DO-loops must have a target address in program memory. Check the address expression or use the 'P:' memory modifier to force the expression into program memory.
E 300: cannot SCS-action, no enclosing loop
The structured control statements (SCS) '.BREAK' and '.CONTINUE' are only allowed inside a loop. Check the loop nesting of your structured control statements.
E 301: missing corresponding "SCS-instruction"
Structured control statements must have proper nesting. Check if all previously started controls have been properly ended.
E 303: unknown condition code '<SCS-condition-code>'
The assembler did not recognize the condition code as a legal DSP56xxx
condition
code. Legal condition codes are: CC, CS, EC, EQ, ES, GE, GT, HS, LC, LE, LO, LS, LT, MI, NE, NN, NR and PL. Change
the condition code to one of these.
E 304: use "OR" or "AND" for multiple conditions
The operators 'OR' and 'AND' give the relationship between multiple conditions in an structured control expression. Check the syntax of
the expression.
E 305: error in structured control expression
The syntax checker found an error in the structured control expression. Check the expression with the syntax description. Common errors are to forget spaces between operands and the '<' and '>' brackets around condition codes.
E 306: expected conditional operator
The syntax checker found some operands but no logical relation between them add a logical operator, or check if you enclosed the conditional operator between '<' and '>' brackets.
E 307: expected operand
Conditional structured control operators must have none or two operands. Check the expression.
E 308: use either "OR" or "AND", not both
A structured control expression may only contain either 'OR' or 'AND' operations, not both. Change the expression to contain only one of these logical operators.
E 309: cannot combine operands of statement, use
others or change SCS registers
The assembler must move the operands into the SCS registers to perform assignments and comparisons. As the assembler uses only two scratch registers some combinations of operands can not be transformed into semantically correct assembly. Source operands could be overwritten before before they can be used. Look in the list file
for the assembly that is generated and change either the SCS registers
with the SCSREG directive or change the operands of the structured control statement.
E 310: illegal combination of operand 1 and 2.
E 311: one of the MOVEP operands must be I/O short
I/O short required for the movep instruction.
E 312: size depends on location, cannot evaluate; probably due
to cache alignment
The size of some constructions (notably the align directives) depend
on the memory address. The gap for cache alignment can only be calculated when the size of the section is given before the cache alignment directive. When a construction which size depends on the location is placed before the align directive the gap cannot be calculated. Remove the cache alignment directive or change the offending construction.
E 313: cache alignment only valid on P sections
Cache alignment is only sensible on code sections. Remove the align directive.
E 314: ENDM within IF/ENDIF
The assembler found an ENDM directive within an IF/ENDIF pair. Check the MACRO and DUP definitions or remove this directive.
E 315: interrupt section "name" too large for
fast interrupts
Name of interrupt section. Fast interrupt has limited size.
E 316: "Symbols:" part not found in map file "filename"
E 317: "Sections:" part not found in map file "filename"
E 318: module "name" not found in map file "filename"
Name of map file and module. Can occur if is assembler called with map file to generate absolute list file.
E 319: "Looplabel" used as end label for multiple
do loops
You used the same loop label for nested loops. Use a different loop label for each nested loop.
E 350: operand number; this kind of operand is
not permitted here
The referred operand can not be used at that position. Common errors are to forget the '#' operator or an address modifier.
E 351: operand number must be in P memory
The referred operand must be an address in program memory. Check the address expression or prefix the operand with 'P:' to force it
to program memory.
E 352: operand number must be in X or Y memory
The referred operand must be an address in X or Y memory. Check the address expression or prefix the operand with 'X:' or 'Y:' to force
it to the wanted memory type.
E 353: illegal operand number in parallel Immediate
Short Data Move
The referred operand may not be used as a operand of an immediate short data move (move type U). Check the instruction syntax and change the operand or the instruction.
E 354: illegal operand number in parallel Long
Memory Data Move
The referred operand may not be used as a operand of a long memory data move (move type L). Check the instruction syntax and change the operand.
E 355: illegal number operand in X-or-Y
move field of parallel Register and Y Memory Data Move
The referred operand may not be used as a operand of a register and
Y memory data move (move type RY). When the error message refers to the X move field, check the R move, otherwise check the Y move. Change the operand or split the instruction into two separate move instructions.
E 356: illegal operand number in parallel
Register to Register Data Move
The referred operand may not be used as a operand of a register to register move (move type R). Check the instruction syntax and change the operand or the instruction or change the parallel move to a separate MOVEC instruction.
E 357: illegal operand number in parallel Address
Register Update Move
The referred operand may not be used as a operand of a register update move (move type U). Only (Rn)-Nn, (Rn)+Nn, (Rn)- and (Rn)+ operands are allowed. Check the instruction syntax and change the operand.
E 358: illegal number operand in X-or-Y
move field of parallel X Memory and Register Data Move
The referred operand may not be used as a operand of a X memory and register data move (move type XR). When the error message refers to the Y move field, check the R move, otherwise check the X move. Change the operand or split the instruction into two separate move instructions.
E 359: illegal number operand in X-or-Y
move field of parallel XY Memory Data Move
The referred operand may not be used as a operand of a X and Y memory data move (move type XY). Check the move field referred to by the error message. Change the operand or split the instruction
into two separate move instructions.
E 360: illegal operand number in parallel X or
Y Memory Data Move
The referred operand may not be used as a operand of a X or Y memory data move (move type X or Y). Change the operand or change the move to a MOVEC instruction.
E 361: no X or Y memory specified on operand number
in parallel X or Y Memory Data Move
The assembler will try to defer the correct address bus from the expression. When this is not possible you must supply the bus using the 'X:' or 'Y:' memory modifier.
E 362: only (Rn)-Nn, (Rn)+Nn, (Rn)- or (Rn)+ permitted
here
Only one of the mentioned operands is permitted. Check the instruction and change the operand accordingly.
E 363: operand must be one of Xn, Yn, An, Bn, A, B, Rn or Nn
Only one of the mentioned registers is permitted. Check the instruction and change the operand accordingly.
E 364: X and Y parallel moves must use different register banks
In a XY memory type move one of the moves must use register R0-R3 and one register R4-R7. Change the registers or split the instruction into two separate moves.
E 365: Bitfield field-name out of range
The bit field width is specified by bits 17-12 in S1 register or in immediate control word #CO. The offset from the least significant
bit is specified by bits 5-0 in S1 register or in immediate control word
#CO. If the offset+width exceeds the value of 56, the result will be undefined.
E 366: operand number must be in L memory
Number is 1, 2 or 3. Instruction is VSL instruction, which requires operand in L.
E 368: instruction name not supported by
DSP56xxx
A couple of instructions are not supported, for instance: norm
4
Fatal Errors (F)
The following errors cause the assembler to terminate immediately.
Fatal errors are usually due to user errors.
F 401: memory allocation error
A request for free memory is denied by the system. All memory has been used. You may have to break your program down into smaller pieces.
F 402: duplicate input filename "file" and "file"
The assembler requires one input filename on the command line. Two or more filenames is erroneous.
F 403: error opening file-kind file : "file-name"
The assembler could not open the given file. When this is a source
file, check if the file you specified at the command line exists and if
it is readable. When the file is a temporary file, check if the environment symbol TMPDIR has been set correctly.
F 404: protection error : message
No protection key or not a IBM compatible PC.
F 405: I/O error
The assembler cannot write its output to a file. Check if you have enough free disk space.
F 407: symbolic debug output error
The symbolic debug information is incorrectly written in the object
file. Please fill out the error report form and send it to TASKING.
F 408: illegal operator precedence
The operator priority table is corrupt. Please fill out the error
report form and send it to TASKING.
F 409: Assembler internal error
The assembler encountered internal inconsistencies. Please fill out
the error report form and send it to TASKING.
F 410: Assembler internal error: duplicate mufom "symbol" during rename
The assembler renames all symbols local to a scope to unique symbols. In this case the assembler did not succeed into making an unique name. Please fill out the error report form and send it to TASKING.
F 411: SYMB error: "message"
An error occurred during the parsing of the SYMB directive. When this SYMB directive is generated by the TASKING C compiler, please fill
out the error report form and send it to TASKING.
F 412: MACRO calls nested too deep (possible endless recursive
call)
There is a limit to the number of nested macro expansions. Currently this limit is set to 1000. Check for recursive definitions or try
to simplify your source when you encounter this restriction.
F 413: cannot evaluate "function"
A function call is encountered although it should have been processed. As a work-around, try to locate the offending function call and remove it from your source. Please fill out the error report form and send
it to TASKING.
F 414: cannot recover from previous errors, stopped
Due to earlier errors the assembler internal state got corrupted and stops assembling your program. Remove the errors reported earlier
and retry.
F 415: error opening temporary file
The assembler uses temporary files for the debug information and list file generation. It could not open or create one of those temporary files. Check if the environment symbol TMPDIR has been set correctly.
F 416: internal error in optimizer
The optimizer found a deadlock situation. Try to assemble without
any optimization options. Please fill out the error report form and send
it to TASKING.
F 417: too many errors, stopped
The assembler found too many errors to continue. One error could cause many other errors. Try to solve the first error and assemble
again.
F 418: absolute listing file not allowed in combination
with -S
Absolute list file generation is not allowed when generating Motorola compatible assembly.
Copyright © 2002 Altium BV