[ERROR]
A complex relocatable expression has been detected. A complex relocatable expression is detected when the expression contains:
XDEF offset
DataSec1: SECTION SHORT
DataLbl1: DS.B 10
DataSec2: SECTION SHORT
DataLbl2: DS.W 15
offset: EQU DataLbl2 - DataLbl1
The macro assembler does not support complex relocatable expressions. The corresponding expression must be evaluated at execution time.
DataSec1: SECTION SHORT
DataLbl1: DS.B 10
DataSec2: SECTION SHORT
DataLbl2: DS.W 15
Offset: DS.W 1
...
CodeSec: SECTION
...
evalOffset:
LD A, #DataLbl2
SUB A, #DataLbl1
LD Offset, A
XDEF Offset
DataSec1: SECTION SHORT
DataLbl1: DS.B 10
DataSec2: SECTION SHORT
DataLbl2: DS.W 15
Offset: DS.W 1
; ...
CodeSec: SECTION
; ...
evalOffset:
LD A,#%lo(DataLbl2)
SUB A,#%lo(DataLbl1)
LD Offset+1,A
LD A,#%hi(DataLbl2)
SBC A,#%hi(DataLbl1)
LD Offset+0,A
DataSec1: SECTION SHORT
DataLbl1: DS.B 10
DataSec2: SECTION SHORT
DataLbl2: DS.W 15
Offset: DS.W 1
...
CodeSec: SECTION
...
evalOffset:
LDA #DataLbl2
SUB #DataLbl1
STA Offset
DataSec1: SECTION SHORT
DataLbl1: DS.B 10
DataSec2: SECTION SHORT
DataLbl2: DS.W 15
Offset: DS.W 1
...
CodeSec: SECTION
...
evalOffset:
LDD #DataLbl2
SUBD #DataLbl1
STD Offset
XDEF Offset
DataSec1: SECTION SHORT
DataLbl1: DS.B 10
DataSec2: SECTION SHORT
DataLbl2: DS.W 15
Offset: DS.W 1
; ...
CodeSec: SECTION
; ...
evalOffset:
LI R4,DataLbl1
LI R5,DataLbl2
SUBF R4,R4,R5
STH R4,Offset
DataSec1: SECTION
DataLbl1: DS.B 10
DataSec2: SECTION
DataLbl2: DS.W 15
Offset: DS.W 1
...
CodeSec: SECTION
...
evalOffset:
LRW R6,[addLbl1]
LD.B R7,(R6,0)
LRW R6,[addLbl1]
LD.B R7,(R6,0)
SUBU R7,R8
LRW R6,[addOff]
LD.B R7,(R6,0)
ALIGN 4
addLbl1: DC.W DataLbl1
addLbl1: DC.W DataLbl2
addOff: DC.W Offset
DataSec1: SECTION SHORT DataLbl1: DS.B 10 DataSec2: SECTION SHORT DataLbl2: DS.W 15 Offset: DS.W 1 CodeSec: SECTION MOVE #DataLbl2, A0 SUB #DataLbl1, A0 MOVE A0, Offset
If both DataSec1 and DataSec2 are in the same section and defined in this module, the assembler can compute the difference:
DataSec1: SECTION SHORT
DataLbl1: DS.B 10
DataLbl2: DS.W 15
offset: EQU DataLbl2 - DataLbl1