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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.