Makro: Konstanten im Flash-Speicher

Gast #1675650
Lesenswert?

Hallo,

gibt es einen derartigen Befehl(oder Makro) der es ermöglicht eine 
Konstante bei der Kompilierung als Programmcode zu schreiben?

Bsp:
...

.org $2a
.BYTES 100 0xfd        ; Makro/Befehl

...
erzeugt:

0x2a: 0xfdfd
0x2c: 0xfdfd
0x2e: 0xfdfd
0x30: 0xfdfd
0x32: 0xfdfd

...

Mit .db bzw .dw kann muss jeder einzelne Wert ja selber geschrieben 
werden.

Unter nasm ist mir so eine Konstruktion bekannt, jedoch nicht für den 
avr-assembler.


Danke schon mal!
Gast #1675869
Lesenswert?

Unter Nasm benutz ich sowas wenn ich nen Bootloader geschrieben hab und 
die letzten 2 Bytes eine Signatur dafür sind, dass der Code ein 
Bootloader ist.
"times" füllt sozusagen nicht-vorhandenen Code mit 0-Bytes(oder 0xff) 
auf und setzt am Ende die 0x55AA Signatur.

In Assembler will ich nur in einen 1000-Byte langen NOP-Block 
springen^^, um mir das Nachdenken über die Schleifenkonstrukte zu 
ersparen (Delay).

Falls es so einen Befehl nicht gibt, verwerfe ich mal die Idee...
#1675882
Lesenswert?

Bubble schrieb:
> Unter Nasm benutz ich sowas wenn ich nen Bootloader geschrieben hab und
> die letzten 2 Bytes eine Signatur dafür sind, dass der Code ein
> Bootloader ist.
> "times" füllt sozusagen nicht-vorhandenen Code mit 0-Bytes(oder 0xff)
> auf und setzt am Ende die 0x55AA Signatur.
dann würde es doch reichen die Signatur an die Endadresse zu setzen - 
zwischen Programm und Signatur steht nach dem Erase der Blöcke eh' 0xFF

> In Assembler will ich nur in einen 1000-Byte langen NOP-Block
> springen^^, um mir das Nachdenken über die Schleifenkonstrukte zu
> ersparen (Delay).
das habe ich auch noch nicht gehört - musst aber viel Speicher haben

> Falls es so einen Befehl nicht gibt, verwerfe ich mal die Idee...
genau, ein Delay mit Schleifen zu programmieren ist doch auch kein 
Problem

Sascha
Gast #1676070
Lesenswert?

Bubble schrieb:
> In Assembler will ich nur in einen 1000-Byte langen NOP-Block
> springen^^, um mir das Nachdenken über die Schleifenkonstrukte zu
> ersparen (Delay).

Das ist jetzt aber nicht Dein Ernst, oder?

Und wenn Du mal eine Sekunde warten musst? Brauchst Du dann 16 Mio Nops?

Manchmal sollte man sich das Nachdenken nicht ersparen ;-)

Grüße
#1676155
Lesenswert?

Bubble schrieb:
> Wenn die Funktion unsinnig wäre, wäre sie doch in NASM nicht
> implementiert...

NASM ist für Architekturen, wo man z.B. mal eben ein Alignment auf eine 
Cache-Zeile haben will, und deshalb die Bytes dazwischen mit irgendwas 
füllen muss (je nach Anwendung vorzugsweise mit etwas, was nicht zu 
einer "Invalid Opcode"-Exception oder gar irgendwelchen sinnlosen 
Befehlen führt).

Bei 8bit-Controllern braucht man das aber tendenziell eher nicht.

Andreas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren