www.riscos.com Technical Support:
Acorn Assembler


Error messages

This appendix lists most of the common error messages that you may get when using the assembler, and gives an explanation for each one of the circumstances that may provoke the error.

  • ADRL can't be used with PC
    The destination register of an ADRL opcode cannot be PC.
  • Area directive missing
    An attempt has been made to generate code or data before the first AREA directive.
  • Area name missing
    The name for the area has been omitted from an AREA directive.
  • Bad alignment boundary
    An alignment has been given which is not a power of two.
  • Bad area attribute or alignment
    Unknown attribute or alignment not in the range 2-12.
  • Bad based number
    A digit has been given in a based number which is not less than the base, for example: 7_8.
  • Bad exported name
    The wording following the EXPORT directive is syntactically not a name.
  • Bad exported symbol type
    The exported symbol is not a program-relative symbol.
  • Bad expression type
    For example, a number was expected but a string was encountered.
  • Bad floating point constant
    The only allowed floating point constants are 0, 1, 2, 3, 5, 10 and 0.5. They must be written in exactly these forms.
  • Bad global name
    An incorrect character appears in the global name.
  • Bad hexadecimal number
    The & introducing a hexadecimal number is not followed by a valid hexadecimal digit.
  • Bad imported name
    The wording following the IMPORT directive is syntactically not a name.
  • Bad local label number
    A local label number must be in the range 0-99.
  • Bad local name
    An incorrect character appears in the local name.
  • Bad macro parameter default value
  • Bad opcode symbol
    A symbol has been encountered in the opcode field which is not a directive and is syntactically not a label.
  • Bad operand type
    For example, a logical value was supplied where a string was required.
  • Bad operator
    The name between colons is not an operator name.
  • Bad or unknown attribute
    Faulty attribute on an IMPORT directive.
  • Bad register list symbol
    An expression used as a register set definition (eg in LDM or STM) was not understood or of the wrong type.
  • Bad register name symbol
    A register name is wrong. Note that all register names must be defined using the RN directive.
  • Bad register range
    A register range from a higher to a lower register has been given; for example, R4-R2 has been typed.
  • Bad rotator
    The rotator value supplied must be even and in the range 0-30.
  • Bad shift name
    Syntax error in shift name.
  • Bad string escape sequence
    A C style escape character sequence (beginning with '\') within a string was incorrect.
  • Bad symbol
    Syntax error in a symbol name.
  • Bad symbol type
    This will occur after a # or * directive and means that the symbol being defined has already been assumed to be of a type which cannot be defined in this way.
  • Branch offset out of range
    The destination of a branch is not within the ARM address space.
  • Code generated in data area
    An opcode has been found in an area which is not a code area.
  • Coprocessor number out of range
  • Coprocessor operation out of range
  • Coprocessor register number out of range
  • Data transfer offset out of range
    The immediate value in a data transfer opcode must be in the range:
    -4095 <= E <= +4095
  • Decimal overflow
    The number exceeds 32 bits.
  • Division by zero
    Entry address already set

    This is the second or subsequent ENTRY directive.
  • Error in macro parameters
    The macro parameters do not match the prototype statement in some way.
  • Error on code file
    An error occurred while writing the output file.
  • External area relocatable symbol used
    A symbol which is an address in another area has been used in a non-trivial expression.
  • Externals not valid in expressions
    An imported symbol has been used in a non-trivial expression.
  • Floating point register number out of range
  • Floating point overflow
  • Floating point number not found
  • Global name already exists
    This name has already been used in some other context.
  • Hexadecimal overflow
    The number exceeds 32 bits.
  • Illegal combination of code and zero initialised
    An object file area cannot be declared both to be code and zero initialised data.
  • Illegal label parameter start in macro prototype
  • Illegal line start should be blank
    A label has been found at the start of a line with a directive which cannot be labelled.
  • Immediate value out of range
    An immediate value in a data processing instruction cannot be obtained by rotating an 8-bit value by an even amount.
  • Imported name already exists
    The name has already been defined or used for something else.
  • Incorrect routine name
    The optional name following a branch to a local label or on a local label definition does not match the routine's name.
  • Invalid line start
    A line may only start with a letter character (the first letter of a label), a digit (the first character of a local label), a semi-colon or a space.
  • Invalid operand to branch instruction
  • Label missing from line start
    The absence of a label where one is required; for example, in the * directive.
  • Local name already exists
    A local name has been defined more than once.
  • Locals not allowed outside macros
    A local variable has been defined in the main body of the source file.
  • MEND not allowed within conditionals
    A MEND has been found amongst [ | ] or WHILE/WEND directives.
  • Missing close bracket
    A missing close bracket or too many opening brackets.
  • Missing close quote
    No closing quote at the end of a string constant.
  • Missing close square bracket
    A ] is absent.
  • Missing comma
    Syntax error due to missing comma.
  • Missing hash
    The hash (#) preceding an immediate value has been forgotten.
  • Missing open bracket
    A missing open bracket or too many closing brackets.
  • Missing open square bracket
  • Multiply or incompatibly defined symbol
    A symbol has been defined more than once.
  • Multiply destination equals first source
  • No current macro expansion
    A MEND, MEXIT or local variable has been encountered but there is no corresponding MACRO.
  • Non-zero data within uninitialised area
  • Numeric overflow
    The number exceeds 32 bits.
  • Register occurs multiply in LDM/STM list
  • Register symbol already defined
    A register symbol has been defined more than once.
  • Register value out of range
    Register values must be in the range 0-15.
  • Shift option out of range
    The range permitted is 0-31, 1-32 or 1-31 depending on the shift type.
  • String overflow
    Concatenation has produced a string of more than 256 characters.
  • String too short for operation
    An attempt has been made to manipulate a string using :LEFT: or :RIGHT: which has insufficient characters in it.
  • Structure mismatch
    Mismatch of ] with [ or |, or WEND and WHILE.
  • Substituted line too long
    During variable and macro parameter substitution the line length has exceeded 256 characters.
  • Symbol missing
    An attempt has been made to reference the length attribute of a symbol but the symbol was omitted or the name found was not recognised as a symbol.
  • Syntax error following directive
    An operand has been provided to a directive which cannot take one, for example: the '|' directive.
  • Syntax error following label
    A label can only be followed by spaces, a semi-colon or the end-of-line symbol.
  • Syntax error following local label definition
    A space, comment, or end-of-line did not immediately follow the local label.
  • Too late to define symbol as register list
    A register list was defined for a symbol already used for another purpose.
  • Too late to ban floating point
  • Too late to set origin now
    The ORG must be set before the Assembler generates code.
  • Too many actual parameters
    A macro call is trying to pass too many parameters.
  • Translate not allowed in pre-indexed form
    The translate option may not be specified in pre-indexed forms of LDR and STR.
  • Unable to close code file
  • Unable to open code file
  • Undefined exported symbol
    The symbol exported is undefined.
  • Undefined symbol
    A symbol has not been given a value.
  • Unexpected characters at end of line
    The line is syntactically complete, but more information is present. The semi-colon prefixing comments may have been omitted.
  • Unexpected operand
    An operand has been found where a binary operator was expected.
  • Unexpected operator
    A non-unary operator has been found where an operand was expected.
  • Unexpected unary operator
    A unary operator has been found where a binary operator was expected.
  • Unknown opcode
    A name in the opcode field has been found which is not an opcode, a directive, nor a macro.
  • Unknown operand
    An operand in the bracketed format {PC} {VAR} {OPT} {TRUE} {FALSE} is not of the correct form.
  • Unknown or wrong type of global/local symbol
    Type mismatch, for example, attempting to set or reset the value of a local or global symbol as logical, where it is a string variable.
  • Unknown shift name
    Not one of the six legal shift mnemonics.

This edition Copyright © 3QD Developments Ltd 2015
Last Edit: Tue,03 Nov 2015