Stand: 13. Februar 2021

Inhaltsverzeichnis

über dieses Dokument
was es hierin gibt
wo man die neuste Version bekommt
wie man den Verfasser kontaktiert
welche gesetzlichen Einschränkungen es gibt
Lizenzlosigkeit
Verfasserschutz
Vorbehalt für zusätzliche Einschränkungen für zukünftige Versionen

allgemeine Informationen
Zweck
Notwendigkeit
Dateinamens-Endung
Zeichenkodierung

die Details
Bibliothekenbeschreibung
Allgemeines
Wert
class names
Notwendigkeit
Schlüssel
Wert
functions
Notwendigkeit
Schlüssel
Wert
Funktionsbeschreibung
Allgemeines
Wert
name in the raw data file
Notwendigkeit
Schlüssel
Wert
names in the source code files
Notwendigkeit
Schlüssel
Wert
parameters
Notwendigkeit
Schlüssel
Wert
from the exporter to the importer
Notwendigkeit
Schlüssel
Wert
Parameterbeschreibung
Allgemeines
Wert
length
Notwendigkeit
Schlüssel
Wert
storage
Notwendigkeit
Schlüssel
Wert
unit
Notwendigkeit
Schlüssel
Wert
from the importer to the exporter
Notwendigkeit
Schlüssel
Wert
Parameterbeschreibung
Allgemeines
Wert
character encoding
Notwendigkeit
Schlüssel
Wert
entries
Notwendigkeit
Schlüssel
Wert
Eintragsbeschreibung
Allgemeines
Wert
character encoding
Notwendigkeit
Schlüssel
Wert
handing over
Notwendigkeit
Schlüssel
Wert
key
Notwendigkeit
Schlüssel
Wert
length
Notwendigkeit
Schlüssel
Wert
storage
Notwendigkeit
Schlüssel
Wert
unit
Notwendigkeit
Schlüssel
Wert
size
Notwendigkeit
Schlüssel
Wert
type
Notwendigkeit
Schlüssel
Wert
handing over
Notwendigkeit
Schlüssel
Wert
length
Notwendigkeit
Schlüssel
Wert
storage
Notwendigkeit
Schlüssel
Wert
unit
Notwendigkeit
Schlüssel
Wert
names in the source code files
Notwendigkeit
Schlüssel
Wert
storage
Notwendigkeit
Schlüssel
Wert
type
Notwendigkeit
Schlüssel
Wert
path and file name without extension
Notwendigkeit
Schlüssel
Wert

weiteres Material zu diesem Thema
Dokumente
Sonstiges
Aufnahme von weiteren Materialien


über dieses Dokument

was es hierin gibt

Dieses Dokument
Alle anderen Informationen über Minicode, inklusiv den anderen Dateitypen, sind in separaten Dokumenten untergebracht. Diese sind im Kapitel "weiteres Material zu diesem Thema - Dokumente" aufgelistet.

wo man die neuste Version bekommt

Derzeit nutze ich OnTheServer.de/Downloads/ um neue Versionen zugänglich zu machen. Sie müsste irgendwo dort in den Unterverzeichnissen sein; das kann sich hin und wieder ein bischen ändern.

Dort gibt es vielleicht auch dieses Dokument in anderen Sprachen.

Die Versions-Angabe von diesem Dokument steht oben rechts ("Stand: ...").

wie man den Verfasser kontaktiert

Der Verfasser von diesem Dokument kann mit der Hilfe von einer elektronischen Nachricht kontaktiert werden. Das hierfür eingerichtete Postfach ist mit der Hilfe von der folgenden Adresse erreichbar:
Kontakt@On(entferne mich)TheServer.de

welche gesetzlichen Einschränkungen es gibt

Lizenzlosigkeit

Dieses Dokument
  • ist an keine Lizenz gebunden.
  • unterliegt nicht den Einschränkungen durch das Urhebergesetz.
  • soll allgemeinfrei (public domain) behandelt werden. Also so, als wenn es sich um ein Eigentum von der Allgemeinheit handelt.

Im Übrigen soll alles, was man auf OnTheServer.de und den Subdomains öffentlich zugänglich findet, entsprechend behandelt werden.

Es gibt auf OnTheServer.de allerdings eine Ausnahme:
Ich lege gelegentlich im Verzeichnis "OnTheServer.de/temp/" urheberrechtlich geschütztes Material ab.

Es ist nicht gestattet, auf irreführendeweise vorzutäuschen, dass das (ursprüngliche) Dokument an eine Lizenz gebunden wäre.

Verfasserschutz

Es ist nicht gestattet, auf irreführendeweise vorzutäuschen, dass man der (ursprüngliche) Verfasser vom Dokument wäre. Der (ursprüngliche) Verfasser muss jedoch nicht namentlich genannt werden.

Vorbehalt für zusätzliche Einschränkungen für zukünftige Versionen

Ich (der ursprüngliche Verfasser) behalte die Möglichkeit, Einschränkungen für
  • die Veränderung oder/und
  • die Verbreitung
aufzuerlegen. Von den Einschränkungen wären lediglich neue Versionen betroffen. Was bisher veröffentlicht wurde, erhält keine weiteren Einschränkungen.

Von diesem Recht werde ich hoffentlich nie gebrauch machen müssen.


allgemeine Informationen

Zweck

Die Import-Definitionsdateien sind ein Hilfsmittel, um Bibliotheken (also ) nutzen zu können.

Mit der Hilfe von einer solchen Datei werden die maschinennahen Spezifikationen definiert, damit Minicode korrekt mit der Bibliothek kommunizieren kann. Dies heißt vor allem, dass Funktionen korrekt aufgerufen werden können und dabei die Parameter in der notwendigen Form und Reihenfolge übergeben werden können.

Notwendigkeit

Für jede Bibliothek, aus welcher etwas importiert werden soll, ist 1 separate Import-Definitionsdatei notwendig. In 1 Import-Definitionsdatei können allerdings durchaus mehrere Funktionen beschrieben werden, solange diese alle jeweils ein Bestandteil von der selben Bibliothek sind.

Dateinamens-Endung

Die vorgeschlagene Dateinamens-Endung heißt "mico-imde". "kernel32.mico-imde" ist ein Beispiel für einen vollständigen Dateinamen.

Die Abkürzung steht für "Minicode - import definition file".

Zeichenkodierung

Die vorgeschlagene Zeichenkodierung heißt "UTF-8".

Die Abkürzung steht für "Unicode Transformation Format - 8 bit (per part)".
Der in Klammern stehende Teil gehört nicht zur offiziellen Bezeichnung.

Im Kapitel "weiteres Material zu diesem Thema - Dokumente" ist ein Dokument über Zeichenkodierungen aufgelistet, in welchem unter anderem diese Zeichenkodierung beschrieben ist.


die Details

Bibliothekenbeschreibung

Allgemeines

Bezeichnung: Bibliothekenbeschreibung
Notwendigkeit: Für jede Import-Definitionsdatei und somit für jede Bibliothek, aus welcher etwas importiert werden soll, ist 1 Bibliothekenbeschreibung notwendig.

In jeder Datei kann nur 1 Bibliothekenbeschreibung vorhanden sein.

Wert

Beispiel: <
    "class names" : <
        ...
    >
    "functions" : <
        ...
    >
    "path and file name without extension" : "libraries/individual_encryption"
>
Beschreibung: Mit der Hilfe von dieser Liste werden die notwendigen Angaben für den Import von 1 Bibliothek gemacht.
Variablentyp: Liste

class names

Notwendigkeit

Dieser Eintrag ist nicht notwendig.

Wenn
  • dieser Eintrag nicht angegeben wird,
dann
  • wird für den Namen von der Klasse der Dateiname von der Bibliothek übernommen. Allerdings wird die Dateinamens-Endung nicht in den Klassennamen übernommen.

Wenn also beispielsweise
  • die Bibliothek "individual_encryption.dll" importiert wird und
  • kein Klassenname angegeben ist,
dann
  • wird die Bibliothek mit der Hilfe von der Klasse "individual_encryption" bereitgestellt.

Schlüssel

Bezeichnung: class names
Variablentyp: Zeichenkette

Wert

Beispiel: <
    "individual_encryption"
    "individuelle_Verschlüsselung"
>
Beschreibung: Mit der Hilfe von dieser Angabe werden die Namen von der Klasse definiert, welche die aus der Bibliothek importierten Funktionen als Methoden bereitstellen soll.

Jeder Eintrag von der Liste dient jeweils für die Angabe von 1 Namen. Für jeden Eintrag wird der Variablentyp "Zeichenkette" erwartet.

Die Klasse kann mit der Hilfe von Quellcode benutzt werden, so als hätte sie der Programmierer mit der Hilfe von Quellcode definiert.
Variablentyp: Liste

functions

Notwendigkeit

Wenn
  • aus der Bibliothek mindestens 1 Funktion importiert werden soll,
dann
  • muss dieser Eintrag existieren.

Schlüssel

Bezeichnung: functions
Variablentyp: Zeichenkette

Wert

Beispiel: <
    <
        ...
    >
    <
        ...
    >
    <
        ...
    >
>
Beschreibung: Mit der Hilfe von dieser Liste werden Funktionsbeschreibungen aufgelistet.

Jeder Eintrag in dieser Liste ist eine Funktionsbeschreibung, welche eine Funktion definiert, welche importiert werden soll.
Variablentyp: Liste

Funktionsbeschreibung

Allgemeines
Bezeichnung: Funktionsbeschreibung
Notwendigkeit: Für jede Funktion, welche aus der Bibliothek importiert werden soll, ist 1 Funktionsbeschreibung notwendig.

Wert
Beispiel: <
    "name in the raw data file" : "decode"
    "names in the source code files" : <
        "decode"
        "dekodieren"
    >
    "parameters" : <
        ...
    >
>
Beschreibung: Mit der Hilfe von dieser Liste werden die notwendigen Angaben für den Import von 1 Funktion gemacht.
Variablentyp: Liste

name in the raw data file
Notwendigkeit
Dieser Eintrag ist notwendig.

Schlüssel
Bezeichnung: name in the raw data file
Variablentyp: Zeichenkette

Wert
Beispiel: decode
Beschreibung: Mit der Hilfe von dieser Angabe wird der Name von der Funktion definiert, welche aus der Bibliothek importierte werden soll.

Als Name muss der selbe Name angegeben werden, wie in der Bibliothek gespeichert ist, um die Funktion anhand vom Namen zu exportieren.
Variablentyp: Zeichenkette

names in the source code files
Notwendigkeit
Dieser Eintrag ist nicht notwendig.

Wenn
  • dieser Eintrag nicht angegeben wird,
dann
  • wird für den Namen von der Methode der Funktionsname übernommen, so wie er in der Bibliothek gespeichert ist.

Wenn also beispielsweise
  • die Funktion "decode" importiert wird und
  • kein Methodenname angegeben wird,
dann
  • wird die Funktion mit der Hilfe von der Methode "decode" bereitgestellt.

Schlüssel
Bezeichnung: names in the source code files
Variablentyp: Zeichenkette

Wert
Beispiel: <
    "decode"
    "dekodieren"
>
Beschreibung: Mit der Hilfe von dieser Angabe werden die Namen von der Methode definiert, welche die aus der Bibliothek importierte Funktion bereitstellen soll.

Jeder Eintrag von der Liste dient jeweils für die Angabe von 1 Namen. Für jeden Eintrag wird der Variablentyp "Zeichenkette" erwartet.

Die Methode kann mit der Hilfe von Quellcode benutzt werden, so als hätte sie der Programmierer mit der Hilfe von Quellcode definiert.
Variablentyp: Liste

parameters
Notwendigkeit
Dieser Eintrag ist notwendig.

Schlüssel
Bezeichnung: parameters
Variablentyp: Zeichenkette

Wert
Beispiel: <
    "from the exporter to the importer" : <
        ...
    >
    "from the importer to the exporter" : <
        ...
    >
>
Beschreibung: Mit der Hilfe von dieser Liste werden Unterlisten definiert, in welchen Parameter definiert werden.
Variablentyp: Liste

from the exporter to the importer
Notwendigkeit
Wenn
  • die zu importierende Funktion mindestens 1 Parameterwert zurückgibt, welcher durch den Exporteur definiert wird und welcher
    • dem Importeur übergeben werden muss, oder
    • vom Importeur vom Stapel gelöscht werden muss,
dann
  • muss dieser Eintrag existieren.

Schlüssel
Bezeichnung: from the exporter to the importer
Variablentyp: Zeichenkette

Wert
Beispiel: <
    <
        ...
    >
    <
        ...
    >
    <
        ...
    >
>
Beschreibung: Mit der Hilfe von dieser Liste werden Parameterbeschreibungen aufgelistet.

Jeder Eintrag in dieser Liste ist eine Parameterbeschreibung, welche einen Parameter definiert, dessen Wert durch den Exporteur definiert wird und welcher
  • dem Importeur übergeben werden muss, oder
  • vom Importeur vom Stapel gelöscht werden muss.

Die Reihenfolge, in welcher diese Parameterbeschreibungen in dieser Liste auftauchen, bestimmt,
  • in welcher Reihenfolge die Parameter im Quellcode bereitgestellt werden und
  • in welcher Reihenfolge die Parameterwerte vom Stapel genommen werden sollen, sofern sie vom Stapel genommen werden sollen.
Variablentyp: Liste

Parameterbeschreibung
Allgemeines
Bezeichnung: Parameterbeschreibung
Notwendigkeit: Für jeden Parameter, dessen Wert durch den Exporteur definiert wird und welcher
  • dem Importeur übergeben werden muss, oder
  • vom Importeur vom Stapel gelöscht werden muss,
ist 1 Parameterbeschreibung notwendig.

Wert
Beispiel: <
    "handing over" : "value"
    "names in the source code files" : <
        ...
    >
    "storage" : "eax"
    "type" : 0
>
Beschreibung: siehe hier
Variablentyp: Liste

length
Notwendigkeit
Wenn
  • beim Eintrag "type" der Wert
    • "4" (Rohdatenkette) oder
    • "6" (Zeichenkette)
    angegeben ist,
dann
  • muss dieser Eintrag existieren.

Schlüssel
Bezeichnung: length
Variablentyp: Zeichenkette

Wert
Beispiel: <
    "storage" : "Ziel_-_Länge_in_Byte"
    "unit" : "bytes"
>
Beschreibung: Mit der Hilfe von dieser Angabe wird definiert, wie die importierte Funktion die Länge von der
  • Rohdatenkette oder
  • Zeichenkette
bekannt macht.
Variablentyp: Liste

storage
Notwendigkeit
Dieser Eintrag ist notwendig.

Schlüssel
Bezeichnung: storage
Variablentyp: Zeichenkette

Wert
Beispiel: "Ziel_-_Länge_in_Byte"
Beschreibung: Mit der Hilfe von dieser Angabe wird
  • entweder ein anderer Parameter angegeben, mit deren Hilfe der Aufrufer die Länge als einen Wert vom Variablentyp "Ganzzahl" angibt.

    In diesem Fall ist dieser andere Parameter mit der Hilfe von Minicode-Quellcode nicht verfügbar.
  • oder durch den Wert "zero termination" angegeben, dass die Zeichenkette durch ein weiteres Zeichen abgeschlossen ist, von welchem alle Bits auf "0" gesetzt sind und dass anhand von diesem Abschluss-Zeichen die Länge ermittelt werden soll.
Variablentyp: Zeichenkette

unit
Notwendigkeit
Wenn
  • beim Eintrag "storage" der Name von einem Parameter angegeben ist,
dann
  • muss dieser Eintrag existieren.
Ansonsten
  • darf dieser Eintrag nicht existieren.

Schlüssel
Bezeichnung: unit
Variablentyp: Zeichenkette

Wert
Beispiel: "bytes"
Beschreibung: Mit der Hilfe von dieser Angabe wird die Einheit von der Länge angegeben.

Es sind folgende Werte zulässig:
Bedeutung: Wert:
Byte bytes
Zeichen characters
Variablentyp: Zeichenkette

from the importer to the exporter
Notwendigkeit
Wenn
  • die zu importierende Funktion mindestens 1 Parameterwert fordert, welcher durch den Importeur definiert werden muss und dem Exporteur übergeben werden muss,
dann
  • muss dieser Eintrag existieren.

Schlüssel
Bezeichnung: from the importer to the exporter
Variablentyp: Zeichenkette

Wert
Beispiel: <
    <
        ...
    >
    <
        ...
    >
    <
        ...
    >
>
Beschreibung: Mit der Hilfe von dieser Liste werden Parameterbeschreibungen aufgelistet.

Jeder Eintrag in dieser Liste ist eine Parameterbeschreibung, die einen Parameter definiert, dessen Wert durch den Importeur definiert werden muss und dem Exporteur übergeben werden muss.

Die Reihenfolge, in welcher diese Parameterbeschreibungen in dieser Liste auftauchen, bestimmt,
  • in welcher Reihenfolge die Parameter im Quellcode definiert werden müssen.
Die umgekehrte Reihenfolge von der Reihenfolge in dieser Liste, bestimmt,
  • in welcher Reihenfolge die Parameterwerte auf den Stapel geladen werden sollen, sofern sie auf den Stapel geladen werden sollen.
Variablentyp: Liste

Parameterbeschreibung
Allgemeines
Bezeichnung: Parameterbeschreibung
Notwendigkeit: Für jeden Parameter, dessen Wert durch den Importeur definiert werden muss und dem Exporteur übergeben werden muss, ist 1 Parameterbeschreibung notwendig.

Wert
Beispiel: <
    "character encoding" : "UTF-8"
    "handing over" : "address"
    "length" : <
        ...
    >
    "names in the source code files" : <
        "Nutzdaten_-_Adresse"
        "Nutzdaten_-_Adresse_-_Offset_in_Byte"
    >
    "storage" : "stack"
    "type" : 6
>
Beschreibung: Mit der Hilfe von dieser Liste werden die notwendigen Angaben für die Übergabe von 1 Parameterwert gemacht.
Variablentyp: Liste

character encoding
Notwendigkeit
Wenn
  • beim Eintrag "type" der Wert "6" (Zeichenkette) angegeben ist,
dann
  • muss dieser Eintrag existieren.

Schlüssel
Bezeichnung: character encoding
Variablentyp: Zeichenkette

Wert
Beispiel: "UTF-8"
Beschreibung: Eine Zeichenkette, welche mit der Hilfe von Minicode-Quellcode verwendet werden kann, wird nicht zwangsweise direkt an die importierte Funktion übergeben, sondern es wird gegebenenfalls zuerst eine neue Zeichenkette erzeugt, welche mit einer anderen Zeichenkodierung kodiert ist.

Mit der Hilfe von dieser Angabe wird definiert, mit welcher Zeichenkodierung die Zeichenkette kodiert werden soll, welche der importieren Funktion übergeben werden soll.

Minicode verwendet in der Regel intern die Zeichenkodierung "UCS-2LE". Wenn
  • diese Zeichenkodierung angegeben wird,
dann
  • ist keine Umwandlung erforderlich.

Wenn
  • die importierte Funktion aus der Windows-API stammt
dann
  • kann
    • für die "ASCII"-Variante die Zeichenkodierung "ASCII-8" verwendet werden, und
    • für die "Unicode"-Variante die Zeichenkodierung "UCS-2LE" verwendet werden.
  • erzeugt die "ASCII"-Variante, im Gegensatz zur "Unicode"-Variante,
    • sowohl in Minicode,
    • als auch in der Windows-API,
    durch zusätzliche Umwandlung(en) einen Geschwindigkeitsnachteil.

Im Kapitel "weiteres Material zu diesem Thema - Dokumente" ist ein Dokument mit allgemeinen Informationen über Minicode aufgelistet. In diesem existiert das Kapitel "die Details von Minicode - Zeichenkodierungen". In diesem Kapitel sind die unterstützten Zeichenkodierungen aufgelistet und somit die zulässigen Werte für diesen Eintrag aufgelistet.

Im Kapitel "weiteres Material zu diesem Thema - Dokumente" ist auch ein Dokument aufgelistet, welches die unterstützten Zeichenkodierungen beschreibt.
Variablentyp: Zeichenkette

entries
Notwendigkeit
Wenn
  • beim Eintrag "type" der Wert "2" (Liste) angegeben ist,
dann
  • muss dieser Eintrag existieren.

Schlüssel
Bezeichnung: entries
Variablentyp: Zeichenkette

Wert
Beispiel: <
    <
        ...
    >
    <
        ...
    >
    <
        ...
    >
>
Beschreibung: Mit der Hilfe von dieser Liste werden Eintragsbeschreibungen aufgelistet.

Jeder Eintrag in dieser Liste ist eine Eintragsbeschreibung, die einen Eintrag vom Datensatz definiert.

Die Reihenfolge, in welche diese Eintragsbeschreibungen in dieser Liste auftauchen, entscheidet darüber, in welcher Reihenfolge die Einträge im Datensatz definiert werden.

Wenn
  • für die Einträge jeweils der Eintrag "key" definiert wird,
dann
  • werden die Einträge in der Liste, die mit der Hilfe von Quellcode definiert wurde, anhand von ihrem Schlüssel identifiziert, um die gewünschte Reihenfolge im Datensatz herzustellen.
Ansonsten
  • wird der Index von jedem Eintrag in der Liste, die mit der Hilfe von Quellcode definiert wurde, verwendet, um die gewünschte Reihenfolge im Datensatz herzustellen. Das heißt, dass dann
    • der erste Eintrag von der Liste, die mit der Hilfe von Quellcode definiert wurde, für den ersten Eintrag im Datensatz verwendet wird und
    • der letzte Eintrag von der Liste, die mit der Hilfe von Quellcode definiert wurde, für den letzten Eintrag im Datensatz verwendet wird.
Variablentyp: Liste

Eintragsbeschreibung
Allgemeines
Bezeichnung: Eintragsbeschreibung
Notwendigkeit: Für jeden Eintrag, den der Datensatz umfassen soll, ist 1 Eintragsbeschreibung notwendig.

Wert
Beispiel: <
    "handing over" : "value"
    "key" : "year"
    "size" : 2
    "type" : 0
>
Beschreibung: Mit der Hilfe von dieser Liste werden die notwendigen Angaben für 1 Eintrag vom Datensatz gemacht.
Variablentyp: Liste

character encoding
Notwendigkeit
Wenn
  • beim Eintrag "type" der Wert "6" (Zeichenkette) angegeben ist,
dann
  • muss dieser Eintrag existieren.

Schlüssel
Bezeichnung: character encoding
Variablentyp: Zeichenkette

Wert
Beispiel: "UTF-8"
Beschreibung: Eine Zeichenkette, die mit der Hilfe von Minicode-Quellcode verwendet werden kann, wird nicht zwangsweise direkt an die importierte Funktion übergeben, sondern es wird gegebenenfalls zuerst eine neue Zeichenkette erzeugt, die mit einer anderen Zeichenkodierung kodiert ist.

Mit der Hilfe von dieser Angabe wird definiert, mit welcher Zeichenkodierung die Zeichenkette kodiert werden soll, welche der importieren Funktion übergeben werden soll.

Minicode verwendet in der Regel intern die Zeichenkodierung "UCS-2LE". Wenn
  • diese Zeichenkodierung angegeben wird,
dann
  • ist keine Umwandlung erforderlich.

Wenn
  • die importierte Funktion aus der Windows-API stammt
dann
  • kann
    • für die "ASCII"-Variante die Zeichenkodierung "ASCII-8" verwendet werden, und
    • für die "Unicode"-Variante die Zeichenkodierung "UCS-2LE" verwendet werden.
  • erzeugt die "ASCII"-Variante, im Gegensatz zur "Unicode"-Variante,
    • sowohl in Minicode,
    • als auch in der Windows-API,
    durch zusätzliche Umwandlung(en) einen Geschwindigkeitsnachteil.

Im Kapitel "weiteres Material zu diesem Thema - Dokumente" ist ein Dokument mit allgemeinen Informationen über Minicode aufgelistet. In diesem existiert das Kapitel "die Details von Minicode - Zeichenkodierungen". In diesem Kapitel sind die unterstützten Zeichenkodierungen aufgelistet und somit die zulässigen Werte für diesen Eintrag aufgelistet.

Im Kapitel "weiteres Material zu diesem Thema - Dokumente" ist auch ein Dokument aufgelistet, welches die unterstützten Zeichenkodierungen beschreibt.
Variablentyp: Zeichenkette

handing over
Notwendigkeit
Wenn
  • beim Eintrag "type" der Wert für eine Klammer angegeben ist,
dann
  • darf dieser Eintrag nicht existieren.
Ansonsten
  • muss dieser Eintrag existieren.

Schlüssel
Bezeichnung: handing over
Variablentyp: Zeichenkette

Wert
Beispiel: value
Beschreibung: Mit der Hilfe von dieser Angabe wird definiert, ob
  • der Wert vom Eintrag oder
  • die Adresse vom Wert vom Eintrag
übergeben werden soll.

Es sind folgende Werte zulässig:
Bedeutung: Wert:
Der Wert vom Eintrag wird indirekt übergeben, indem die Adresse in die vorgesehene Speicherzelle gespeichert wird, welche angibt, wo der Wert im Daten-Segment von der Anwendung beginnt. Es handelt sich bei dieser Adresse um einen Offset vom Anfang vom Segment. Es wird jenes Datensegment verwendet, dessen Identifikationskennung im Segmentregister "data segment "d" selector" ("ds") gespeichert ist.

Dies ist bei allen Werten für den Eintrag "type" möglich.
address
Der Wert vom Eintrag wird direkt übergeben, indem der Wert in die vorgesehene Speicherzelle gespeichert wird.

Dies ist allerdings nur bei folgenden Werten für den Eintrag "type" möglich:
  • "0" (Ganzzahl)
value
Variablentyp: Zeichenkette

key
Notwendigkeit
Dieser Eintrag ist nicht notwendig.

Schlüssel
Bezeichnung: key
Variablentyp: Zeichenkette

Wert
Beispiel: year
Beschreibung: Mit der Hilfe von dieser Angabe wird der Schlüssel in der Liste angegeben, die mit der Hilfe von Quellcode definiert wird.

Wenn
  • ein solcher "key"-Eintrag angegeben wird,
dann
  • muss bei allen Einträgen ein solcher "key"-Eintrag angegeben werden und
  • werden die Einträge in der Liste, die mit der Hilfe von Quellcode definiert wurde, anhand von ihrem Schlüssel identifiziert, um die gewünschte Reihenfolge im Datensatz herzustellen.
Ansonsten
  • wird der Index von jedem Eintrag in der Liste, die mit der Hilfe von Quellcode definiert wurde, verwendet, um die gewünschte Reihenfolge im Datensatz herzustellen. Das heißt, dass dann
    • der erste Eintrag von der Liste, die mit der Hilfe von Quellcode definiert wurde, für den ersten Eintrag im Datensatz verwendet wird und
    • der letzte Eintrag von der Liste, die mit der Hilfe von Quellcode definiert wurde, für den letzten Eintrag im Datensatz verwendet wird.
Variablentyp: Zeichenkette

length
Notwendigkeit
Dieser Eintrag ist nicht notwendig.

Wenn
  • beim Eintrag "type" der Wert
    • "4" (Rohdatenkette) oder
    • "6" (Zeichenkette)
    angegeben ist,
dann
  • darf dieser Eintrag existieren.
Ansonsten
  • darf dieser Eintrag nicht existieren.

Schlüssel
Bezeichnung: length
Variablentyp: Zeichenkette

Wert
Beispiel: <
    "storage" : "Quelle_-_Länge_in_Byte"
    "unit" : "bytes"
>
Beschreibung: Mit der Hilfe von dieser Angabe wird definiert, wie die importierte Funktion die Länge von der Zeichenkette erhält.
Variablentyp: Liste

storage
Notwendigkeit
Dieser Eintrag ist notwendig.

Schlüssel
Bezeichnung: storage
Variablentyp: Zeichenkette

Wert
Beispiel: "Quelle_-_Länge_in_Byte"
Beschreibung: Mit der Hilfe von dieser Angabe wird
  • entweder der "key"-Wert von einem anderen Eintrag angegeben, mit deren Hilfe Minicode die Länge als einen Wert vom Variablentyp "Ganzzahl" angeben soll.

    In diesem Fall wird der Wert von diesem anderen Eintrag nicht gelesen.
  • oder durch den Wert "zero termination" angegeben, dass Minicode die Zeichenkette durch ein weiteres Zeichen abschließen soll, von welchem alle Bits auf "0" gesetzt sind.
Variablentyp: Zeichenkette

unit
Notwendigkeit
Wenn
  • beim Eintrag "storage" der "key"-Wert von einem Eintrag angegeben ist,
dann
  • muss dieser Eintrag existieren.
Ansonsten
  • darf dieser Eintrag nicht existieren.

Schlüssel
Bezeichnung: unit
Variablentyp: Zeichenkette

Wert
Beispiel: "bytes"
Beschreibung: Mit der Hilfe von dieser Angabe wird die Einheit von der Länge angegeben.

Es sind folgende Werte zulässig:
Bedeutung: Wert:
Byte bytes
Zeichen characters
Variablentyp: Zeichenkette

size
Notwendigkeit
Wenn
  • beim Eintrag "handing over" der Wert "value" angegeben ist, und
  • beim Eintrag "type" der Wert "0" (Ganzzahl) angegeben ist,
dann
  • muss dieser Eintrag existieren.

Schlüssel
Bezeichnung: size
Variablentyp: Zeichenkette

Wert
Beispiel: 2
Beschreibung: Mit der Hilfe von dieser Angabe wird definiert, wieviele von den niederwertigsten Bytes von der Ganzzahl für den Wert im Datensatz verwendet werden sollen.

Es sind folgende Werte zulässig:
  • 1
  • 2
  • 4
  • 8
  • 16
  • 32
  • 64
  • 128
  • 256
Variablentyp: Ganzzahl

type
Notwendigkeit
Dieser Eintrag ist notwendig.

Schlüssel
Bezeichnung: type
Variablentyp: Zeichenkette

Wert
Beispiel: 0
Beschreibung: Mit der Hilfe von dieser Angabe wird der Typ von dem Wert definiert, welcher in Minicode verwendet werden soll.

Es sind folgende Werte zulässig:
Bedeutung: Wert:
Der Variablentyp "Ganzzahl" soll verwendet werden.

Dieser Variablentyp ist der Variablentyp "Ganzzahl mit Vorzeichen" von der x86-CPU-Architektur.
0
Der Variablentyp "Rohdatenkette" soll verwendet werden. 4
Der Variablentyp "Zeichenkette" soll verwendet werden. 6
Variablentyp: Ganzzahl

handing over
Notwendigkeit
Wenn
  • beim Eintrag "type" der Wert für eine Klammer angegeben ist,
dann
  • darf dieser Eintrag nicht existieren.
Ansonsten
  • muss dieser Eintrag existieren.

Schlüssel
Bezeichnung: handing over
Variablentyp: Zeichenkette

Wert
Beispiel: address
Beschreibung: Mit der Hilfe von dieser Angabe wird definiert, wie der Parameterwert übergeben werden soll.

Es sind folgende Werte zulässig:
Bedeutung: Wert:
Der Wert vom Eintrag wird indirekt übergeben, indem die Adresse in die vorgesehene Speicherzelle gespeichert wird, welche angibt, wo der Wert im Daten-Segment von der Anwendung beginnt. Es handelt sich bei dieser Adresse um einen Offset vom Anfang vom Segment. Es wird jenes Datensegment verwendet, dessen Identifikationskennung im Segmentregister "data segment "d" selector" ("ds") gespeichert ist.

Dies ist bei allen Werten für den Eintrag "type" möglich.
address
Der Parameterwert wird direkt übergeben, indem der Parameterwert in die vorgesehene Speicherzelle gespeichert wird.

Dies ist allerdings nur bei folgenden Werten für den Eintrag "type" möglich:
  • "0" (Ganzzahl)
value
Variablentyp: Zeichenkette

length
Notwendigkeit
Dieser Eintrag ist nicht notwendig.

Wenn
  • beim Eintrag "type" der Wert
    • "4" (Rohdatenkette) oder
    • "6" (Zeichenkette)
    angegeben ist,
dann
  • darf dieser Eintrag existieren.
Ansonsten
  • darf dieser Eintrag nicht existieren.

Schlüssel
Bezeichnung: length
Variablentyp: Zeichenkette

Wert
Beispiel: <
    "storage" : "Quelle_-_Länge_in_Byte"
    "unit" : "bytes"
>
Beschreibung: Mit der Hilfe von dieser Angabe wird definiert, wie die importierte Funktion die Länge von der Zeichenkette erhält.
Variablentyp: Liste

storage
Notwendigkeit
Dieser Eintrag ist notwendig.

Schlüssel
Bezeichnung: storage
Variablentyp: Zeichenkette

Wert
Beispiel: "Quelle_-_Länge_in_Byte"
Beschreibung: Mit der Hilfe von dieser Angabe wird
  • entweder ein anderer Parameter angegeben, mit deren Hilfe Minicode die Länge als einen Wert vom Variablentyp "Ganzzahl" angeben soll.

    In diesem Fall erhält dieser andere Parameter einen Standardwert, sodass für diesen anderen Parameter im Minicode-Quellcode kein Wert übergeben werden muss.
  • oder durch den Wert "zero termination" angegeben, dass Minicode die Zeichenkette durch ein weiteres Zeichen abschließen soll, von welchem alle Bits auf "0" gesetzt sind.
Variablentyp: Zeichenkette

unit
Notwendigkeit
Wenn
  • beim Eintrag "storage" der Name von einem Parameter angegeben ist,
dann
  • muss dieser Eintrag existieren.
Ansonsten
  • darf dieser Eintrag nicht existieren.

Schlüssel
Bezeichnung: unit
Variablentyp: Zeichenkette

Wert
Beispiel: "bytes"
Beschreibung: Mit der Hilfe von dieser Angabe wird die Einheit von der Länge angegeben.

Es sind folgende Werte zulässig:
Bedeutung: Wert:
Byte bytes
Zeichen characters
Variablentyp: Zeichenkette

names in the source code files
Notwendigkeit
Dieser Eintrag ist nicht notwendig.

Schlüssel
Bezeichnung: names in the source code files
Variablentyp: Zeichenkette

Wert
Beispiel: <
    "Nutzdaten_-_Adresse"
    "Nutzdaten_-_Adresse_-_Offset_in_Byte"
>
Beschreibung: Mit der Hilfe von dieser Angabe werden die Namen vom Parameter definiert.

Jeder Eintrag von der Liste dient jeweils für die Angabe von 1 Namen. Für jeden Eintrag wird der Variablentyp "Zeichenkette" erwartet.

Durch die Angabe von einem Namen kann eventuell bei der Fehlersuche eine etwas wertvollere Fehlermeldung generiert werden.
Variablentyp: Liste

storage
Notwendigkeit
Wenn
  • beim Eintrag "type" der Wert für eine Klammer angegeben ist,
dann
  • darf dieser Eintrag nicht existieren.
Ansonsten
  • muss dieser Eintrag existieren.

Schlüssel
Bezeichnung: storage
Variablentyp: Zeichenkette

Wert
Beispiel: eax
Beschreibung: Mit der Hilfe von dieser Angabe wird definiert, welche Speicherzelle für die Übergabe vom Parameterwert verwendet werden soll.

Es sind folgende Werte zulässig:
Bedeutung: Wert:
Das "2 Byte"-große Allzweckregister "accumulator" ("ax") soll verwendet werden. ax
Das "1 Byte"-große Allzweckregister "accumulator high byte" ("ah") soll verwendet werden. ah
Das "1 Byte"-große Allzweckregister "accumulator low byte" ("al") soll verwendet werden. al
Das "2 Byte"-große Allzweckregister "base" ("bx") soll verwendet werden. bx
Das "1 Byte"-große Allzweckregister "base high byte" ("bh") soll verwendet werden. bh
Das "1 Byte"-große Allzweckregister "base low byte" ("bl") soll verwendet werden. bl
Das "2 Byte"-große Allzweckregister "counter" ("cx") soll verwendet werden. cx
Das "1 Byte"-große Allzweckregister "counter high byte" ("ch") soll verwendet werden. ch
Das "1 Byte"-große Allzweckregister "counter low byte" ("cl") soll verwendet werden. cl
Das "2 Byte"-große Allzweckregister "data" ("dx") soll verwendet werden. dx
Das "1 Byte"-große Allzweckregister "data high byte" ("dh") soll verwendet werden. dh
Das "1 Byte"-große Allzweckregister "data low byte" ("dl") soll verwendet werden. dl
Das "4 Byte"-große Allzweckregister "extended accumulator" ("eax") soll verwendet werden. eax
Das "4 Byte"-große Allzweckregister "extended base" ("ebx") soll verwendet werden. ebx
Das "4 Byte"-große Stapelregister "extended base pointer" ("ebp") soll verwendet werden. ebp
Das "4 Byte"-große Allzweckregister "extended counter" ("ecx") soll verwendet werden. ecx
Das "4 Byte"-große Allzweckregister "extended data" ("edx") soll verwendet werden. edx
Das "4 Byte"-große Zeigerregister "extended destination index" ("edi") soll verwendet werden. edi
Das "4 Byte"-große Zeigerregister "extended source index" ("esi") soll verwendet werden. esi
Das "4 Byte"-große Stapelregister "extended stack pointer" ("esp") soll verwendet werden. esp
Der Stapel soll verwendet werden. stack
Variablentyp: Zeichenkette

type
Notwendigkeit
Dieser Eintrag ist notwendig.

Schlüssel
Bezeichnung: type
Variablentyp: Zeichenkette

Wert
Beispiel: character string
Beschreibung: Mit der Hilfe von dieser Angabe wird der Variablentyp von dem Wert definiert, welcher in Minicode verwendet werden soll.

Es sind folgende Werte zulässig:
Bedeutung: Wert:
Der Variablentyp "Ganzzahl" soll verwendet werden.

Dieser Variablentyp ist der Variablentyp "Ganzzahl mit Vorzeichen" von der x86-CPU-Architektur.
0
Der Variablentyp "Liste" soll verwendet werden.

Hierfür werden die Werte von der Liste verwendet, die in Minicode definiert wurde, um daraus einen Datensatz im linearen Speicher vom Programm zu erzeugen.

Wenn in Minicode in der Liste Schlüssel angegeben werden, dann können diese benutzt werden, um die Reihenfolge von den einzelnen Einträgen im Datensatz zu bestimmen. Andernfalls werden die Indexe von den Einträgen von der Liste verwendet, um die Reihenfolge von den Einträgen im Datensatz zu bestimmen.

Die Schlüssel von den Einträgen in der Liste werden zu keinem Bestandteil vom Datensatz.

Nachdem die Funktion aufgerufen wurde und durchlaufen ist, werden die Werte aus dem Datensatz verwendet, um die Liste in Minicode zu aktualisieren.
2
Der Variablentyp "Rohdatenkette" soll verwendet werden. 4
Der Variablentyp "Zeichenkette" soll verwendet werden. 6
Einge eckige Klammer ("[" oder "]") soll verwendet werden. 10
Einge geschweifte Klammer ("{" oder "}") soll verwendet werden. 11
Einge runde Klammer ("(" oder ")") soll verwendet werden. 12
Variablentyp: Ganzzahl

path and file name without extension

Notwendigkeit

Dieser Eintrag ist notwendig.

Schlüssel

Bezeichnung: path and file name without extension
Variablentyp: Zeichenkette

Wert

Beispiel: libraries/individual_encryption
Beschreibung: Mit der Hilfe von dieser Angabe wird
  • der Pfad und
  • der Dateiname
von der Bibliothek definiert, aus welcher mindestens 1 Funktion importiert werden soll.
  • Der Punkt (".") und
  • die Dateinamens-Endung
müssen allerdings weggelassen werden. Es wird davon ausgegangen, dass der Dateiname die Dateinamensendung hat, welche in dem Betriebssystem üblich ist, für welches das Projekt kompiliert wird.

Die Pfadangabe kann
  • absolut oder
  • relativ zur kompilierten Datei
sein, so wie er gültig ist, wenn die kompilierte Datei ausgeführt wird.

Die zu importierende Bibliothek wird während dem Kompilieren nicht benötigt und muss daher nicht existieren. Diese Pfadangabe muss aber dann gültig sein, wenn die kompilierte Datei ausgeführt wird.
Variablentyp: Zeichenkette


weiteres Material zu diesem Thema

Dokumente

Name vom Sprache: Umfang vom Inhalt: Weblink:
Autor: Dokument:
Minicode - allgemeine Informationen deutsch
  • enthält allgemeine Informationen über die Programmiersprache "Minicode"
OnTheServer.de/Downloads/
Minicode - Export-Definitionsdateien
  • beschreibt Export-Definitionsdateien für die Programmiersprache "Minicode"
Minicode - Klasse - Ganzzahl
  • beschreibt die Klasse "Ganzzahl" für die Programmiersprache "Minicode"
Minicode - Klasse - Kommazahl
  • beschreibt die Klasse "Kommazahl" für die Programmiersprache "Minicode"
Minicode - Klasse - Liste
  • beschreibt die Klasse "Liste" für die Programmiersprache "Minicode"
Minicode - Klasse - Nichtigkeitsangabe
  • beschreibt die Klasse "Nichtigkeitsangabe" für die Programmiersprache "Minicode"
Minicode - Klasse - Rohdatenkette
  • beschreibt die Klasse "Rohdatenkette" für die Programmiersprache "Minicode"
Minicode - Klasse - Wahrheitsangabe
  • beschreibt die Klasse "Wahrheitsangabe" für die Programmiersprache "Minicode"
Minicode - Klasse - Zeichenkette
  • beschreibt die Klasse "Zeichenkette" für die Programmiersprache "Minicode"
Minicode - Kompiler-Konfigurationsdateien
  • beschreibt Kompiler-Konfigurationsdateien für die Programmiersprache "Minicode"
  • zeigt, welche Konfigurationsmöglichkeiten es für den Kompiler gibt
Minicode - Quellcode-Dateien
  • beschreibt Quellcode-Dateien für die Programmiersprache "Minicode"
Zeichenkodierungen
  • beschreibt verschiedene Zeichenkodierungen

Sonstiges

Name vom Beschreibung: Sprache: Weblink:
Autor: Material:
Beispiele für Import-Definitionsdateien Bei den Bibliotheken befinden sich Beispiele für Import-Definitionsdateien. Für fast jede Bibliothek ist die entsprechende Import-Definitionsdatei vorhanden, welche entsprechend der Dokumentation über die Bibliothek die maschinennahen Definitionen für eine korrekte Kommunikation mit der Bibliothek enthält. Minicode OnTheServer.de/Downloads/

Aufnahme von weiteren Materialien

Wenn dann
Sie dürfen durchaus auch Ihre eigenen Materialien zuschicken.

Bei den zugesendeten Materialien werde ich beurteilen, ob sie sich für die Auflistung eignen. Manche Materialien werden nicht aufgenommen, weil beispielsweise ein Hinweis enthalten ist, dass Es besteht kein Anspruch darauf, dass zugesendete Materialien aufgenommen werden.

Link zum Kapitel "wie man den Verfasser kontaktiert".