1 Befehl in Hochsprache entspricht x Befehlen in Maschinensprache



  • Da gibt es kein Richtwert. Viele Anweisungen kannst du ohne Probleme 1:1 umsetzen, gerade in C.

    Mach doch lieber so etwas, dass du ein Programm schreibst und dir anhand dessen das Verhätlniss ausrechnest.



  • Rodent Bait schrieb:

    Unmöglich zu sagen, weil ein Auto von 30 bis 300kmh alles fahren kann

    Ja, das ist schon klar. 🕶

    Aber so einen Richtwert, ob es eher 10 oder eher 10000 Befehle sind, sowas müsste es doch irgendwo geben.

    Das ist ihmo wirklich extrem schwer zu sagen. Ein Programmierer Anfänger schreibt wahrscheinlich viel mehr "Befehle" (<- Begriff afaik gar nicht definiert) um das zu erreichen, was ein Profi mit weitaus weniger Code erreichen kann. Aber auch das ist schon sehr stark pauschalisiert.
    Und für alle Hochsprachen allgemein kann man so einen Wert wahrscheinlich überhaupt nicht angeben. Um das gleiche Ergebnis in C++ wie in Programmiersprachen wie Delphi oder Smalltalk oder Whitespace 😉 zu erziehlen ist oft mehr Code nötig (ohne Gewähr. Ich kenn mich mit den anderen Sprachen leider auch nicht so gut aus).
    EDIT: Andererseits unterstützt C++ Templates, die einem viel Schreibarbeit abnehmen können...



  • kingruedi schrieb:

    Da gibt es kein Richtwert. Viele Anweisungen kannst du ohne Probleme 1:1 umsetzen, gerade in C.

    Meinst du damit 1 C-Anweisung in 1 Assembleranweisung?



  • interpreter schrieb:

    Meinst du damit 1 C-Anweisung in 1 Assembleranweisung?

    Oft: ja.



  • Ja, bei Anweisungen stimmt das wohl.
    Endet ja oft nur in einem bedingten Sprungbefehl und einem Label.



  • warum compilierst du nicht einfach ein paar kleinere c-programme mit einem etwas älterem compiler der erst nach assembler umwandelt bevor er maschinencode draus macht?
    dann kannste doch gut vergleichen.



  • borg schrieb:

    warum compilierst du nicht einfach ein paar kleinere c-programme mit einem etwas älterem compiler der erst nach assembler umwandelt bevor er maschinencode draus macht?

    Warum braucht man da einen älteren Compiler?



  • weil modernere imo nicht mehr den umweg über assembler gehen.

    edit:
    oder doch:

    man gcc schrieb:

    -S weist den Compiler an, den erzeugten Code als Assembler-Quelltext auszugeben

    man kann ihm aber sagen er solls trotzdem machen 😃

    macht sich doch bestimmt gut wenn du 2 kleine beispiel c++-programme mit den dazugerhörigem assembler-code in deine bachelorarbeit machst, als einfach irgendwelche magischen zahlen aufzutischen die keiner nachvollziehen kann.



  • der gcc macht immer assembler, er gibt ihn nur nicht aus 😉



  • Da hilft wohl nur Statistik... 2-3 Programme nehmen, die Anweisungen der Hochsprache zählen, und die Anzahl der Opcodes ermitteln.

    Danach Verhältnis bilden. Die Masse an Übersetzungen gibt dann eine ganz gute Aussage, und deckt auch die Extremfälle "1 Hochsprachenanweisung => 0 Maschinenbefehle" und "1 Hochsprachenanweisung => 1000 Maschinenbefehle" ab.

    Luke, nutze die Macht ... des Gesetzes der großen Zahlen.


Anmelden zum Antworten