Assembler reader errors.
This section lists the errors that are generated by the inline assembler reader. They are not the messages of the assembler itself.
General assembler errors
- Divide by zero in asm evaluator
-
This fatal error is reported when a constant assembler expression performs a division by zero.
- Evaluator stack overflow, Evaluator stack underflow
-
These fatal error is reported when a constant assembler expression is too big to be evaluated by the constant parser. Try reducing the number of terms.
- Invalid numeric format in asm evaluator
-
This fatal error is reported when a non-numeric value is detected by the constant parser. Normally this error should never occur.
- Invalid Operator in asm evaluator
-
This fatal error is reported when a mathematical operator is detected by the constant parser. Normally this error should never occur.
- Unknown error in asm evaluator
-
This fatal error is reported when an internal error is detected by the constant parser. Normally this error should never occur.
- Invalid numeric value
-
This warning is emitted when a conversion from octal, binary or hexadecimal to decimal is outside of the supported range.
- Escape sequence ignored
-
This error is emitted when a non ANSI C escape sequence is detected in a C string.
- Asm syntax error - Prefix not found
-
This occurs when trying to use a non-valid prefix instruction.
- Asm syntax error - Trying to add more than one prefix
-
This occurs when you try to add more than one prefix instruction.
- Asm syntax error - Opcode not found
-
You have tried to use an unsupported or unknown opcode.
- Constant value out of bounds
-
This error is reported when the constant parser determines that the value you are using is out of bounds, either with the opcode or with the constant declaration used.
- Non-label pattern contains @
-
This only applied to the m68k and Intel styled assembler. This is reported when you try to use a non-label identifier with an ’@’ prefix.
- Internal error in Findtype()
- Internal Error in ConcatOpcode()
- Internal Errror converting binary
- Internal Errror converting hexadecimal
- Internal Errror converting octal
- Internal Error in BuildScaling()
- Internal Error in BuildConstant()
- internal error in BuildReference()
- internal error in HandleExtend()
- Internal error in ConcatLabeledInstr()
-
These errors should never occur. If they do then you have found a new bug in the assembler parsers. Please contact one of the developers.
- Opcode not in table, operands not checked
-
This warning only occurs when compiling the system unit, or related files. No checking is performed on the operands of the opcodes.
- @CODE and @DATA not supported
-
This Turbo Pascal construct is not supported.
- SEG and OFFSET not supported
-
This Turbo Pascal construct is not supported.
- Modulo not supported
-
Modulo constant operation is not supported.
- Floating point binary representation ignored
- Floating point hexadecimal representation ignored
- Floating point octal representation ignored
-
These warnings occur when a floating point constant is declared in a base other than decimal. No conversion can be done on these formats. You should use a decimal representation instead.
- Identifier supposed external
-
This warning occurs when a symbol is not found in the symbol table. It is therefore considered external.
- Functions with void return value can’t return any value in asm code
-
Only routines with a return value can have a return value set.
- Error in binary constant
- Error in octal constant
- Error in hexadecimal constant
- Error in integer constant
-
These errors are reported when you tried using a constant expression that is invalid or whose value is out of range.
- Invalid labeled opcode
- Asm syntax error - error in reference
- Invalid Opcode
- Invalid combination of opcode and operands
- Invalid size in reference
- Invalid middle sized operand
- Invalid three operand opcode
- Assembler syntax error
- Invalid operand type
-
You tried using an invalid combination of opcode and operands. Check the syntax and if you are sure it is correct, please contact one of the developers.
- Unknown identifier
-
The identifier you are trying to access does not exist, or is not within the current scope.
- Trying to define an index register more than once
- Trying to define a segment register twice
- Trying to define a base register twice
-
You are trying to define an index/segment register more than once.
- Invalid field specifier
-
The record or object field you are trying to access does not exist, or is incorrect.
- Invalid scaling factor
- Invalid scaling value
- Scaling value only allowed with index
-
Allowed scaling values are 1,2,4 or 8.
- Cannot use SELF outside a method
-
You are trying to access the SELF identifier for objects outside a method.
- Invalid combination of prefix and opcode
-
This opcode cannot be prefixed by this instruction.
- Invalid combination of override and opcode
-
This opcode cannot be overridden by this combination.
- Too many operands on line
-
At most three operand instructions exist on the m68k, and i386, you are probably trying to use an invalid syntax for this opcode.
- Duplicate local symbol
-
You are trying to redefine a local symbol, such as a local label.
- Unknown label identifer
- Undefined local symbol
- local symbol not found inside asm statement
-
This label does not seem to have been defined in the current scope.
- Assemble node syntax error
- Not a directive or local symbol
-
The assembler statement is invalid, or you are not using a recognized directive.
I386 specific errors
- repeat prefix and a segment override on
<=i386 ... -
A problem with interrupts and a prefix instruction may occur and may cause false results on 386 and earlier computers.
- Fwait can cause emulation problems with emu387
-
This warning is reported when using the FWAIT instruction. It can cause emulation problems on systems which use the em387.dxe emulator.
- You need GNU as version >= 2.81 to compile this MMX code
-
MMX assembler code can only be compiled using GAS v2.8.1 or later.
- NEAR ignored
- FAR ignored
-
NEARandFARare ignored in the Intel assemblers, but are still accepted for compatibility with the 16-bit code model. - Invalid size for MOVSX/MOVZX
- 16-bit base in 32-bit segment
- 16-bit index in 32-bit segment
-
16-bit addressing is not supported. You must use 32-bit addressing.
- Constant reference not allowed
-
It is not allowed to try to address a constant memory address in protected mode.
- Segment overrides not supported
-
Intel style (eg: rep ds stosb) segment overrides are not supported by the assembler parser.
- Expressions of the form [sreg:reg...] are currently not supported
-
To access a memory operand in a different segment, you should use the sreg:[reg...] syntax instead of [sreg:reg...]
- Size suffix and destination register do not match
-
In intel AT&T syntax, you are using a register size which does not concord with the operand size specified.
- Invalid assembler syntax. No ref with brackets
- Trying to use a negative index register
- Local symbols not allowed as references
- Invalid operand in bracket expression
- Invalid symbol name:
- Invalid Reference syntax
- Invalid string as opcode operand:
- Null label references are not allowed
- Using a defined name as a local label
- Invalid constant symbol
- Invalid constant expression
- / at beginning of line not allowed
- NOR not supported
- Invalid floating point register name
- Invalid floating point constant:
- Asm syntax error - Should start with bracket
- Asm syntax error - register:
- Asm syntax error - in opcode operand
- Invalid String expression
- Constant expression out of bounds
- Invalid or missing opcode
- Invalid real constant expression
- Parenthesis are not allowed
- Invalid Reference
- Cannot use __SELF outside a method
- Cannot use __OLDEBP outside a nested procedure
- Invalid segment override expression
- Strings not allowed as constants
- Switching sections is not allowed in an assembler block
- Invalid global definition
- Line separator expected
- Invalid local common definition
- Invalid global common definition
- assembler code not returned to text
- invalid opcode size
- Invalid character: <
- Invalid character: >
- Unsupported opcode
- Invalid suffix for intel assembler
- Extended not supported in this mode
- Comp not supported in this mode
- Invalid Operand:
- Override operator not supported
m68k specific errors.
- Increment and Decrement mode not allowed together
-
You are trying to use dec/inc mode together.
- Invalid Register list in movem/fmovem
-
The register list is invalid. Normally a range of registers should be separated by - and individual registers should be separated by a slash.
- Invalid Register list for opcode
- 68020+ mode required to assemble
An experiment, built from development snapshots. Not the official Free Pascal or Lazarus documentation.
