inline assembler unter C - auslesen der register

OP #366419
Lesenswert?
• ▲
▼
Hallöchen an alle hier im Forum

Bin noch relativ neu und Unerfahren in der Mikrocontroller
programmierung und komme seit ein paar tagen bei einem (eher trivialen?
) problem nicht weiter. Ich will eine routine in C schreiben, die den
Inhalt der Register (auf einem Amtel Atmega16) via USART ausgibt. Es
handelt sich um eine Übung für die Uni, d.h ich muss es selber
schreiben und kann keine fertigen Lösungen verwenden. Die register
werden doch am Anfang des Srams eingeblendet und deshalb könnte ich sie
doch relativ leicht in einer schleife auslesen oder? (inline assembler).
Aber gerade dieser Teil bereitet mir kopfzerbrechen, des Rest hätte ich
schon...könnte vielleich jemand ein kurzes inline-asm code snipplet
posten welches einfach den inhalt aller register in ein unsigned char[]
kopiert? Wäre sehr hilfreich, i kapier die inline assembler direktive
nämlich überhaupt nicht..
Angehängte Dateien:
Moderator Persönliche Seite #366420
Lesenswert?
• ▲
▼
Warum inline asm?  Eben da sie ja am Anfang des RAM-Bereiches
eingeblendet werden, musst du doch nur die Adressen 0 bis 31
auslesen.  Das geht auch in C.

Dass die Übung keinen nennenswerten praktischen Nährwert hat,
versteht sich von selbst.  Der Inhalt von einigen der so
ausgelesenen Register hängt ja vom Programmcode selbst ab.
OP #366425
Lesenswert?
• ▲
▼
Ja, genau das wollte ich mit einer Inline Assembler routine realisieren,
da ich ja nicht weiss welche register memcpy verändert. Also eingentlich
eine ganz einfache sache, eine assembler routine die einen
Speicherbereich kopiert, aber da ist´s halt bei mir gescheitert
bisher...:-)

matthias
Moderator Persönliche Seite #366426
Lesenswert?
• ▲
▼
Warum glaubst du denn, dein inline asm würde weniger Register
zerstören als memcpy()?  Davon abgesehen, kannst du dir ja im
generierten Assemblercode oder im Disassembler angucken, was
passiert.

Der inline asm ist wirklich alles andere als ein Einstiegsprojekt,
vor allem beim GCC.  Er ist unwahrscheinlich mächtig, aber auch
unwahrscheinlich kryptisch.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.