Übersetzen in Inline Assembler

OP #1563861
Hallo!

Meine Ausgangslage ist die folgende:

Ich habe ein fertiges C - Programm vorliegen und möchte nun in einem 
abschließenden Schritt noch einige Funktionen als Inline - Assembler - 
Code einbinden (Warum? Da das Projekt eine Aufgabenstellung ist und 
diese Funktionen aus Übungszwecken eben in Inline - Assembler 
eingebunden werden sollen, "um das auch einmal gemacht zu haben").
Wie ich dies grundsätzlich bewerkstellige, weiß ich (aufgrund der 
Tutorials) mitlerweile. Meine Assembler - Kenntnisse sind jedoch 
(leider) sehr beschränkt.
Meine Idee wäre jetzt an dieser Stelle, die Befehle einfach aus dem List 
- File der Reihe nach abzuschreiben, also mittels "asm volatile ( ... ); 
" und dann noch die jeweiligen Funktionen als "inline" deklarieren.
Führt mich das ans Ziel ober habe ich da einen gewaltigen Dnekfehler 
drinnen?

Besten Danke,

Alex
Persönliche Seite
Alexander Klinkan schrieb:
> Führt mich das ans Ziel ober habe ich da einen gewaltigen Dnekfehler
> drinnen?

Ja, das führt zum Ziel, ist aber nicht Sinn der Sache.
Und dein Lehrer/Prof wird das auch gleich erkennen.

Du musst auch berücksichtigen, dass der Compiler ggf Optimierungen 
fährt: also auch Codes miteinander verschmilzt, den du nicht einfach so 
heraustrennen kannst.

Wenn Du aber das Listfile ansiehst, den Code verstehst und ihn dann 
(idealerweise in eigenen Worten übernimmst) wäre das schon OK. Aber dann 
auch wirklich verstehen!
Persönliche Seite
Funktionen mit inline Kennzeichnung sind was anderes als 
Inlineassemblercode.

Ja, du kannst ASM-Code aus dem Listfile nehmen und als Inlineassembler 
verpacken. Das ist halt Cheaten. Cheaten kann auffallen, wenn du 
hochnotpeinlich nach dem Sinn des ASM-Teils befragt wirst. Normalerweise 
erkennt ein erfahrener ASM-Progger händisch erstellten ASM-Code.

Technisch gesehen musst du aufpassen, dass die richtigen Daten in den 
richtigen Registern landen und dass der Compiler mitbekommt, welche 
Register ausserhalb seiner Kontrolle manipuliert wurden. Wenn eine 
Funktion nicht mehr als C-Code vorhanden ist, könnte der Compiler ja auf 
die Idee kommen Register anderwärtig zu benutzen. Ich denke eine 1:1 
Übernahme scheitert in den meisten Fällen.

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.