I.1 Die Parrot Assemblersprache



Ähnliche Dokumente
5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Installation OMNIKEY 3121 USB

Anzeige von eingescannten Rechnungen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

etax.schwyz: Suche nach Steuerfalldateien

Stepperfocuser 2.0 mit Bootloader

Gezielt über Folien hinweg springen

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Microsoft Access 2010 Navigationsformular (Musterlösung)

Einführung in die Programmierung (EPR)

Sichern auf den zentralen TSM-Servern unter Windows. Sichern auf den zentralen TSM-Servern unter Windows

Anleitung über den Umgang mit Schildern

Dokumentation IBIS Monitor

Synchronisations- Assistent

Import und Export von Übergängern

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Arbeiten mit UMLed und Delphi

Webseiten mit fragwürdigen Aufrufen von "spy & track" - Unternehmen

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Professionelle Seminare im Bereich MS-Office

Informationen zur Verwendung von Visual Studio und cmake

Grundlagen von Python

Flash Videos einbinden

AutoCAD Dienstprogramm zur Lizenzübertragung

Datenexport aus JS - Software

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Datenbanken Kapitel 2

Verarbeitung von ZV-Dateien im Internetbanking. Inhalt. 1. Datei einlesen Datei anzeigen, ändern, löschen Auftrag ausführen...

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Zählen von Objekten einer bestimmten Klasse

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Woche 1: Was ist NLP? Die Geschichte des NLP.

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

Einführung in die Programmierung

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

NODELOCKED LIZENZ generieren (ab ST4)

Bedienungsanleitung Rückabwicklungsrechner

Die SPD und die Grünen machen im Niedersächsischen Landtag. Alle Menschen sollen in der Politik mitmachen können.

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung

Umzug der Datenbank Firebird auf MS SQL Server

Statuten in leichter Sprache

4.1 Wie bediene ich das Webportal?

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Einführung in TexMaker

Thermoguard. Thermoguard CIM Custom Integration Module Version 2.70

Pflegeberichtseintrag erfassen. Inhalt. Frage: Antwort: 1. Voraussetzungen. Wie können (Pflege-) Berichtseinträge mit Vivendi Mobil erfasst werden?

Lehrer: Einschreibemethoden

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Kennen, können, beherrschen lernen was gebraucht wird

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Informationen zum Ambulant Betreuten Wohnen in leichter Sprache

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Artikel Schnittstelle über CSV

Viele Bilder auf der FA-Homepage

NoClick. Eine kurze Anleitung. Kommhelp e.v Vereinsregister. Spendenkonto kommhelp e. V. Konto Horstweg 25

Druckerscriptsprache

Rundung und Casting von Zahlen

Avenue Oldtimer Liebhaber- und Sammlerfahrzeuge. Ihre Leidenschaft, gut versichert

SRH - Kurzinformation

Wenn nicht alle alles mitbekommen sollen: Surfspuren vollständig beseitigen

Graphic Coding. Klausur. 9. Februar Kurs A

SOFiSTiK AG Installationsanleitung

1. EINLEITUNG 2. GLOBALE GRUPPEN Globale Gruppen anlegen

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Access Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli inkl. zusätzlichem Übungsanhang ACC2010-UA

Nach der Installation des FolderShare-Satellits wird Ihr persönliches FolderShare -Konto erstellt.

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Installationsanleitung Sander und Doll Mobilaufmaß. Stand

Installationsanleitung für OpenOffice.org Sprachpakete

2. Semester, 2. Prüfung, Lösung

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach Bremen. Friedrich-Mißler-Straße Bremen

teamsync Kurzanleitung

Inhaltverzeichnis 1 Einführung Zugang zu den Unifr Servern Zugang zu den Druckern Nützliche Links... 6

Hardware - Software - Net zwerke

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

TR75E002-A FA / Bedienungsanleitung Industrie-Handsender-Verwaltung IHV DEUTSCH

Meinungen zur Altersvorsorge

TYPO3 Tipps und Tricks

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Zwischenablage (Bilder, Texte,...)

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Dazu stellen Sie den Cursor in die Zeile, aus der eine Überschrift werden soll, und klicken auf die gewünschte Überschrift.

QTrade GmbH Landshuter Allee München Seite 1

Systemvoraussetzung < zurück weiter >

IT-SICHERHEIT IM UNTERNEHMEN Mehr Sicherheit für Ihre Entscheidung

Informatik Repetitorium SS Volker Jaedicke

Die besten Excel-Tastenkombinationen im Überblick

Transkript:

I.1 Die Parrot Assemblersprache Die virtuelle CPU Parrot ermöglicht die Verarbeitung der Parrot Assemblersprache (PASM). Zum Einstieg soll ein erstes Beispiel die Ausführung einer PASM-Datei zeigen. Legen Sie eine Datei mit folgem Inhalt an. Die Datei soll assem.pasm heißen. print "Ich programmiere gerne Parrot Assembler.\n" Datei: assem.pasm.pasm ist die Standard-Endung für Dateien mit Parrot Assembler Code. Die Ausführung der Datei geschieht wie folgt: > parrot assem.pasm Ich programmiere gerne Parrot Assembler. > Folge Kommandos übersetzten die Datei assem.pasm in Parrot Bytecode. > parrot output=assem.pbc assem.pasm > parrot o assem.pbc assem.pasm Mit der Optionen output oder o spezifiziert man den Namen der Datei, in welche der Bytecode geschrieben wird..pbc ist die Standard-Endung für Dateien mit Parrot Bytecode. Die Parrot CPU dient natürlich auch dazu, um direkt Parrot-Bytecode auszuführen. > parrot passem.pbc Erhält parrot eine Datei mit einer anderen Endung als.pasm oder.pbc übergeben, interpretiert es den Inhalt dieser Datei als PIR-Programm. Die Erweiterung Parrot Intermediate Representation (PIR) von PASM stellt das nächste Kapitel vor. Wollen Sie eine Datei mit einer anderen Endung als.pasm oder ohne Endung als PASM interpretiert wissen, so müssen Sie die Option -a verwen. Dies ist zum Beispiel der Fall, wenn Sie bei UNIX den Aufruf von parrot und das PASM-Programm in einer Datei schreiben. Ohne die Option -a würde das folge Beispiel nicht funktionieren: #!/usr/local/bin/parrot -a print "Ich programmiere gerne Parrot Assembler.\n" Datei: assem Die Anweisung sollte nicht fehlen. Sie beet das Bytecode Segment und stoppt damit die Ausführung durch den Interpreter. Ohne die Anweisung kann nur die Ausführung des Bytecode Segments nicht mehr fortgesetzt werden und hinterlässt den Interpreter in einem undefinierten Zustand. Es kommt zu einem Speicherzugriffsfehler. PASM-Grundlagen PASM hat eine einfache Syntax. Jede Anweisung steht in einer eigenen Zeile. Anweisungen beginnen bei Parrot Assembly (PASM) mit einer Instruktion, genannt opcode. Die opcodes bilden den Befehlssatz der virtuellen CPU. Argumente hinter dem opcode sind mit Kommas voneinander separiert. Allgemeine Form einer Instruktion: [Label-Name:] opcode ErgebnisSpeicherplatz, Arg, Arg... Zum Beispiel das Setzen eines Integer-Registers und been des Programms: set I0, 9 LABEL: 1

Parrot ist eine Register basierte Maschine. Parrot hat jeweils 32 Register für folge vier Gruppen von Datentypen: Ganzzahlen (integer) I0... I31 Gleitkommazahlen (floating-point numbers) N0... N31 Zeichenketten (strings) S0... S31 PMCs (Parrot Magic Cookies) P0... P31 Parrot hat also mit vier Sätzen a 32 Register ingesamt 4 x 32 Register. PMCs können auf komplexe Datenstrukturen zeigen und werden später genauer betrachtet. Registernamen beginnen mit einem Großbuchstaben, welcher den Registertyp identifiziert, und haben eine Registernummer zwischen 0 und 31. Folge Code-Sequenz setzt jeweils ein Register der vier Registertypen mit einem Wert (Ganzzahl-Register Nummer 0, Gleitkommazahl-Register Nummer 2, Zeichenketten-Register Nummer 1, PMC-Register Nummer 2): set I0, 9 set N2, 3.1 set S1, 'Zeichenkette' set P2, P15 I.1.1 Die API von Parrot für die Ein-/Ausgabe Nachfolg steht ein einführes Beispiel, um von der Standard-Eingabe zu lesen. # Weist dem Register "P0" das ParrotIO Objekt für die Standard- # Eingabe zu. getstdin P0 print "Prompt: " readline S0, P0 Der opcode open öffnet eine Datenquelle bzw. -senke für Ein-/Ausgabe-Operationen. open(out PMC, in STR, in STR) Als erstes Argument erhält der opcode ein Zielregister. Bei Erfolg gibt die Funktion ein Objekt für einen Datenstrom zurück. Das zweite Argument ist die Datenquelle bzw. -senke (z. B.: Dateiname, Betriebssystem-Kommando). Das dritte und letzte Argument gibt den Modus an, mit dem über das Datenstrom-Objekt zugegriffen werden kann: Lesen (r), Schreiben (w), Anhängen (a), Pipe (p) open P0, "data.txt", "r" typeof S0, P0 eq_str S0, "FileHandle" OPEN_OKAY printerr "Fehler beim Oeffnen der Datei: data.txt\n" OPEN_OKAY: close P0 Die Funktion readline ließt eine Zeile von dem als zweiten Argument angegebenen Dateihandle bis EOL. 2

Dabei ließt readline das oder die EOL-Zeichen (\n bei Unix, \r\n bei Windows) mit. readline(out STR, in PMC) Weitere Dokumentation > perldoc docs/pdds/pdd22_io.pod 3

I.2 Parrot Intermediate Representation Parrot Intermediate Representation (PIR) ist eine Schicht auf der Parrot Assemblersprache. Das bedeutet alle PASM opcodes sind gültiger PIR-Code. Ein erstes Beispiel soll auch hier die Ausführung von PIR-Code mit dem Programm parrot zeigen. Die Datei assem.pir enthält folgen Inhalt: print "Ich arbeite gerne mit Perl!\n". Datei: assem.pir Damit das Beispiel funktioniert, sind die opcodes print und in ein Unterprogramm eingebettet worden. Die Datei enthält mit den Direktiven.sub und. eine Kompilationseinheit, damit das Übersetzen des Programms klappt. Ausführen der Datei assem.pir: > parrot assem.pir Ich arbeite gerne mit Perl! > Erzeugen einer Parrot-Assembler-Datei mit der Endung pasm und einer Parrot-Bytecode-Datei mit der Endung pbc aus einer PIR-Datei: > parrot -o assem.pasm assem.pir > parrot -o assem.pbc assem.pir Benannte Variablen Die.local oder.sym Anweisung deklarieren benannte Variablen..local int Zahl1, Zahl2, Zahl3 Beispiel, um die Anzahl der Argumente der Kommandozeile auszugeben:.local int argc.local pmc args.include "iglobals.pasm" # runtime/parrot/include/iglobals.pasm getinterp args set args, args[.iglobals_argv_list] argc = elements args # args = args[2] print argc print "\n". INTVAL elements(interp, PMC* self) Gibt die Anzahl der Elemente vom PMC zurück. getinterp(out PMC) Ermittelt den aktuellen Parrot-Interpreter. 4

Beispiel, um den Programm-Namen, die Anzahl der Argumente und diese selbst, eins pro Zeile, auszugeben..local int argc.local pmc args.include "iglobals.pasm" # runtime/parrot/include/iglobals.pasm getinterp args set args, args[.iglobals_argv_list] # args = args[2].local string tmp print 'Programm-Name: ' tmp = args[0] print tmp argc = elements args argc = argc - 1 print ' Anzahl der Argumente:' print argc print "\n\n".local int i i = 1 LOOP: if i > argc goto END tmp = args[i] print 'Argument ' print i print ': ' print tmp print "\n" inc i goto LOOP END:. # Es folgt der Dokumentations-Teil =head1 Programm: print_args.pir Dieses Programm gibt den Programm-Namen, die Anzahl der Argumente und diese selbst, zeilenweise aus. =cut 5