Unterschied zwischen .equ und .Wort in den ARM Assembly?
Ich bin neugierig - Was ist der Unterschied zwischen .equ
und .word
Richtlinien im ARM assembly, bei der Definition von Konstanten?
InformationsquelleAutor jhtong | 2014-02-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
.equ
ist wie#define
in C:.word
ist wieunsigned int
in C:Oder initialisiert mit einem Wert:
- +1 für C-Anweisungen. Danke!!!
Erbsenzählerei 🙂 1)
.word is like unsigned int in C
: aber es wird nicht festgelegtst_size
wie die meisten C-Compiler, und es kann überall eingesetzt werden, z.B. auf den text-Abschnitt, um code zu generieren. 2).equ is like #define
: aber es erzeugt auch ein ABS symbol || Weitere Informationen: stackoverflow.com/a/33157659/895245war gerade versucht, eine Beziehung zu etwas, das die OP verstehen könnten, wie aber nicht genau wie, ähnlich wie vielleicht ein besseres Wort als wie?
InformationsquelleAutor old_timer
.Wort ist eine Richtlinie, ordnet ein Wort-große Menge an Speicherplatz (memory) in diesem Ort. Es kann zusätzlich haben, die Lage Initialisierung mit einem vorgegebenen Wert.
.equ ist mehr wie ein C-Präprozessor die #define-Anweisung - wird es ersetzt in jedem nachfolgenden code.
https://sourceware.org/binutils/docs-2.24/as/Equ.html#Equ
https://sourceware.org/binutils/docs-2.24/as/Word.html#Word
Dies ist eigentlich nicht ARM-spezifisch, sondern gilt für alle gas-targets.
.word
zum initialisieren von Variablen im RAM...man braucht etwas zur Laufzeit zu tun.InformationsquelleAutor unixsmurf
NASM 2.10.09 ELF-Ausgang:
.word
ist einfach: es gibt 2 bytes, um die Objekt-Datei, egal wo wir sind.Folgen:
.word
ist nach einem symbolx:
,x
auf diese bytes.word
ist in das text-segment, jene bytes, die möglicherweise ausgeführt werdenEs hat absolut keine andere Nebenwirkung. Insbesondere tut es nicht legen Sie die
st_size
Feld der symbol-Tabelle (z.B.int
oft == 4 bytes), das ist etwas vernünftiges Compiler tun sollte. Sie müssen die.size x, 2
Richtlinie..equ
hat zwei Dinge:st_shndx == SHN_ABS
und dem angegebenen WertBeispielcode:
Nun:
Gibt:
die bestätigt, dass die makro-Effekt, und:
enthält:
bestätigt die
SHN_ABS
- Effekt: ein symbol wurde geschaffen, und es könnte verwendet werden, aus einer anderen Datei verknüpfen, wenn es global waren. Ich habe erklärt das in mehr detail bei https://stackoverflow.com/a/33148242/895245Die situation ist Analog für NASM ist
equ
, außer, dass der NASM-version kann nur einmal verwendet werden pro symbol..set
- und die ist-gleich-Zeichen=
(Quelle) sind die gleichen wie.equ
.Sollten Sie auch einen Blick in
.equiv
https://sourceware.org/binutils/docs-2.25/as/Equiv.html , die verhindert, dass Neudefinition.InformationsquelleAutor Ciro Santilli 新疆改造中心 六四事件 法轮功