EQU #define in Assembler?

satyria

Newbie
Registriert
Aug. 2020
Beiträge
1
Hallo,

ich würde gerne bestimmten lesbaren Konstanten in Assemler (GAS) verwenden.
Als Beispiel habe ich versucht folgenden Code zu Kompilieren:
C:
BASE EQU  0xFE000000
    oder
#define BASE 0xFE000000
    
    ...
    ...

ldr r0,= BASE

    ...
    ...

Der Assembler (Gnu GAS) kompiliert dies ohne Probleme, egal welche Version ich nehme. Allerdings meldet der spätere Linker, das er BASE nicht kennt:
Code:
build/main.o: in function `wait2$':
(.init+0x8044): undefined reference to `BASE'
Übrigens: in der wait2$ Funktion wird "BASE" nicht verwendet.

Wie kann ich das lösen?

Gruß, Satyria
 
... bin mir nicht ganz sicher, jedoch erzeugt #define ein Objekt welches der Linker (im .obj-File) findet und einbinden kann, EQU jedoch nicht.
 
Die Syntax von Befehlen für den Assembler sollte
Code:
.equ Symbol, value
sein.

Wenn der Linker das Symbol vermisst, sieht der Assembler deine Definition offensichtlich einfach nicht und erwartet daß der linker dieses als Global Symbol finden kann.

GAS Assembler Directives
 
Zurück
Oben