Skip to main content
Top

2023 | OriginalPaper | Chapter

7. Programmieren von Maschinen

Authors : Frank Slomka, Michael Glaß

Published in: Grundlagen der Rechnerarchitektur

Publisher: Springer Fachmedien Wiesbaden

Activate our intelligent search to find suitable subject content or patents.

search-config
loading …

Zusammenfassung

Zur technischen Informatik gehören nicht nur die Technologie, Schaltungstechnik und der logische Aufbau eines Rechners. Die Maschinen müssen auch programmiert werden. Insbesondere sollte ein Rechnerarchitekt ein tiefes Verständnis der maschinennahen Programmierung haben, da er den Befehlssatz entwerfen muss. Und zwar so, dass sowohl Hardware als auch Software effizient sind und reibungslos ineinandergreifen. Naturgemäß kann dieses Kapitel nicht alle Aspekte des Programmierens abdecken. An dieser Stelle kommt es darauf an, die grundlegenden Konzepte der maschinennahen Programmierung zu beleuchten und zu verstehen, wie sich Primitive der Hochsprachen auf die Maschine bringen lassen. Das heißt, wir werden uns um die Prinzipien der Programmierung kümmern und Schablonen entwerfen, um später beliebige Anwendungen für Computer programmieren zu können. Mittlerweile hat sich die universelle Registermaschine sowohl im Desktopbereich als auch in der Welt der eingebetteten Rechner durchgesetzt. In diesem Kapitel werden am Beispiel des MIPS die grundlegenden Konzepte der Assembler-Programmierung behandelt und gezeigt, wie ein Compiler diese in Maschinencode umsetzen kann. Beispielhaft sollen Primitive der Hochsprache C in Assembler-Code übersetzt werden. Dazu soll ein einfaches C-Programm als Beispiel dienen. Dieses besteht nur aus wenigen Zeilen, deckt aber alle grundlegenden Aspekte ab. Insbesondere ist C Grundlage der oft verwendeten Programmiersprachen C++, C# oder auch Java. Sie eignet sich daher gut als Ausgangspunkt zum Verständnis der Assembler-Programmierung. Die Sprache selbst entstand im Rahmen von Forschungsarbeiten zu Betriebssystemen. Bedingt durch ihren Ursprung ist sie gut zur systemnahen Programmierung geeignet und wird daher oft in eingebetteten Systemen verwendet. Im Vergleich zu ihren Nachfolgern wie C++ und Java ist sie auf der einen Seite einfach, da nicht alle bekannten Programmierparadigmen abgedeckt sind, andererseits aber komplex, weil sie viele Freiheiten und syntaktische Tricks zur hardwarenahen Programmierung besitzt. Dieser aus Sicht des praktischen Informatikers Nachteil prädestiniert sie allerdings, um zu zeigen, wie Hochsprache auf die Ebene der Maschine abgebildet wird. Und darum geht es uns am Ende in diesem Kapitel.

Dont have a licence yet? Then find out more about our products and how to get one now:

Springer Professional "Wirtschaft+Technik"

Online-Abonnement

Mit Springer Professional "Wirtschaft+Technik" erhalten Sie Zugriff auf:

  • über 102.000 Bücher
  • über 537 Zeitschriften

aus folgenden Fachgebieten:

  • Automobil + Motoren
  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Elektrotechnik + Elektronik
  • Energie + Nachhaltigkeit
  • Finance + Banking
  • Management + Führung
  • Marketing + Vertrieb
  • Maschinenbau + Werkstoffe
  • Versicherung + Risiko

Jetzt Wissensvorsprung sichern!

Springer Professional "Technik"

Online-Abonnement

Mit Springer Professional "Technik" erhalten Sie Zugriff auf:

  • über 67.000 Bücher
  • über 390 Zeitschriften

aus folgenden Fachgebieten:

  • Automobil + Motoren
  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Elektrotechnik + Elektronik
  • Energie + Nachhaltigkeit
  • Maschinenbau + Werkstoffe




 

Jetzt Wissensvorsprung sichern!

Springer Professional "Wirtschaft"

Online-Abonnement

Mit Springer Professional "Wirtschaft" erhalten Sie Zugriff auf:

  • über 67.000 Bücher
  • über 340 Zeitschriften

aus folgenden Fachgebieten:

  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Finance + Banking
  • Management + Führung
  • Marketing + Vertrieb
  • Versicherung + Risiko




Jetzt Wissensvorsprung sichern!

Footnotes
1
Das ist wichtig, könnten Kaninchen sonst ab- oder zuwandern.
 
2
Im ursprünglichen Befehlssatz ist kein move vorgesehen, und es gibt keinen Opcode dafür. Allerdings kennt der MIPS-Assembler Pseudobefehle.
 
3
Diese Programmierung der Fibonacci-Folge ist ineffizient, da in den beiden Unterprogrammen die komplette Folge bis zum Schleifenindex kalkuliert und dann verworfen wird. Eigentlich würde es ausreichen, im Fibonacci-Unterprogramm jede berechnete Zahl auszugeben und dafür das Unterprogramm gleich mit dem Argument n aufzurufen. In diesem Kapitel kommt es uns jedoch nicht darauf an, die Fibonacci-Folge effizient zu programmieren, sondern darauf, anhand dieser die wesentlichen Aspekte der Assembler-Programmierung zu diskutieren. Das Beispiel mahnt allerdings, sich beim Schreiben von Programmen ggf. zu vergegenwärtigen, dass ineffizienter Code auch durch das blinde Verwenden von Bibliotheken entstehen kann.
 
4
Ein echter Befehl ist einer, für den ein eigener Opcode spezifiziert ist und der daher direkt von der Maschine verstanden wird.
 
Metadata
Title
Programmieren von Maschinen
Authors
Frank Slomka
Michael Glaß
Copyright Year
2023
DOI
https://doi.org/10.1007/978-3-658-36659-9_7