Re: [Projekt] eigener Computer
Verfasst: 02.02.2017, 10:53
Hi !!
Also: Hiermit, wie versprochen, die Spezifikation meiner Programmiersprache 8-) !!!
DER AKTUELLE STAND:
Sub-Projekt Programmiersprache: bug-fixing im Bereich der arrays.
Sub-Projekt Betriebsystem: kernel - Konzept ist im Detail fertig, Treiber und GUI Konzepte sind fertig
Sub-Projekt Mikrochips: Chip - Design ist ca. zur Hälfte fertig; der Prozessor-core ist implementiert. Es fehlen so aufwendige Dinge wie Speicher,
welche ich automatisiert implementieren werde (automatisiert z.B. auf Grund von address-decoding).
Sub-Projekt Graphik-chip: debugging von Texturierung; das Kommunikationsprotokoll für zwischen Grafikchip und Hauptprozessor (also Betriebsystem, da auf ROM) ist fertig implementiert 8-)
Jetzt zur Spezifikation meiner Programmiersprache:
Ich hoffe Ihr könnt alles entziffern (manches ist noch Stichwortweiße) bzw. verstehen :D .
Mal sehen was Ihr davon haltet.
Und hier gehts los:
Zum Verständnis: Arise heißt meine Programmiersprache, Events heißt mein Betriebsystem
(1)
Schlüsselwörter ; Bedeutung
decl ;Variablendeklaration
infinite ; Endlosschleife (ist bei meiner Programmiersprache DIE Schleife)
endInfinite
break ; Ausbruch aus der Endlosschleife
= ; Zuweisung
delta ; Maschinencode - interface; siehe unten
function ; Funktionsdeklaration (Funktionen besitzen bei mir KEINE Parameter; die Übergabe geschieht über globale Variablen)
endFunction
return ; Funktionswertrückgabe
endProgram ;Anweisung für mein Betriebsystem, das Programm zu beenden
if
else
endIf
: ; goto - Label
goto ; Sprungbefehl á la goto :)
events ; Parallelisierungsbefehl: Multi-threading; das Betriebsystem erhält wieder die Kontrolle und sieht zu wie es gemäß seiner multi-tasking/multi-threading Strategie weiter verfährt
' ; Kommentar
redim ; Redeklaration von dynamischen arrays !!! (siehe unten)
(2)
Variablendeklarationen:
Festlegung von Menge der Zahlen und die Dimension (Vektor oder Matrix und die Dimension(en))
wie in der Mathematik
Multidimensionale arrays (über zwei Dimensionen hinaus) sind (noch) nicht unterstützt
Variablennamen dürfen beliebige Bezeichnungen aufweisen - sogar Zahlen !!!
bei Zahlen ist der Variablennamen dann allerdings ein override zu einer Zahl.
Variablen müssen nach der Deklaration noch initialisiert werden, sonst steht der aktuelle Speicherinhalt drin!
(3)
Zuordnungen und Typsicherheit
Variablen müssen nach der Deklaration noch initialisiert werden, sonst steht der aktuelle Speicherinhalt drin!
statische Zuordnungen
Typ: Fließkommazahl = 8 (man muss nicht 8.0 schreiben)
Ganzzahl = 10.4 geht natürlich nicht
Operationen müssen typsicher sein. Das bedeutet, dass alle Operanten vom gleichen Typ sein müssen, wie die Zielvariable.
Bei Fehler gibt Compiler Fehlermeldung aus
array - Zuordnungen:
decl xmatrix[2,3] Natürlichezahl
xmatrix = ((2,3)(3,2)(3,3))
decl xvector[4] Natürlichezahl
xvector = (2,3,y,5)
für arrays gibt es mindestens ein Element !!! keine leere Menge !!!
das da eine Variable mindestens einen Wert speichern muss !!!
die array Definition muss stets die gleiche Größe aufweisen, wie der Ziel - array groß ist !
->Variablendefinitionskonform
(4)
dynamische Arrays:
bei dynamischen Arrays kann eine sogenannte redim space angegeben werden
Diese bestimmt wie viel Platz dass nach der tatsächlichen Größe des Arrays für eventuelle Größenänderungen noch freigelassen wird.
Größenänderungen von dynamischen Arrays geschieht über den redim Befehl.
Mit Hilfe von diesem können die Dimensionen des dynamischen arrays neu festgelegt werden.
Die darin befindlichen Daten werden zur Laufzeit entsprechend der Größenänderung umkopiert.
Der allokierte Speicherplatz bleibt nach dem redim Befehl gleich.
Eine neue redim space kann beim redim Kommando nicht angegeben werden.
Beim Überschreiten der redim space beim redim Kommando mittels der angegebenen Dimensionen wird das Programm beendet.
Syntax:
decl dynamicArray[dimension1,dimension2] 20
decl dynamicArray[dimension1,dimension2] dynamicRedimSpaceVariable
redim dynamicArray[newsize1,newsize2]
die Zuweisung der redim space kann dynamisch (per Variable) geschehen.
Die Transformation der Daten des dynamischen Arrays während eines redim Befehls geschieht nach folgender einfacher, selbsterklärender Regelung:
Wenn der array größer wird, liegen die alten Daten am Anfang darin,
wenn der array kleiner wird, werden die Daten am Ende abgeschnitten.
(5)
operationen:
a&b
a|b
a^b (XOR)
a=b
a<b
a>b (nutzt intern b<a)
a<=b
a>=b
a+b
a-b
a*b
a/b
a%b (Modulo als Fließkommazahloperation mit Natürlichezahl-Ergebnis)
a! (invert)
a~ (cast)
a>>f (shift right and fill with f)
a<<f (shift left and fill with f)
(6)
Funktionen als Methodik ("es geht wirklich nicht anders")
nicht nur als Modularisierung / reusability
nur globale Variablen, keine Parameter als lokale Variablen, da
1. Kontext sowieso gegeben (auch bei Funktionen als Methodik)
2. prinzipiell nur globale Variablen (auch keine Kapselung)
Funktionswerte (return command) müssen in die aufrufende Wertzuweisung (z.B. x[2] = functionX) passen
(7)
beliebige Zuweisung/Einführung von Binärzahlen
Wenn Sie einer Variable eine Zahl zuweisen möchten, die im Dualsystem gegeben ist, dann geben Sie einfach die 128stellige Repräsentation ein.
Dies können Sie für alle Fälle einer Einführung einer Zahl in das Arise-System erledigen (zum Beispiel auch beim Indizieren von arrays - mit Binärzahlen).
Beispiel:
x = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000
Dies gilt auch für Fließkommazahlen.
(8)
binäre Fließkommazahlen sind als binäre Ganzzahlen kodiert.
der Aufbau einer Fließkommazahl ist wie folgt:
1bit für Read/Write reserviert + 1 bit Vorzeichen ( 1 bedeutet minus; 0 bedeutet plus)
+ 62 bits Vorkommastellen ( also 2^0 aufwärts)
+ 64 bits Nachkommastellen negative Zweierpotenzen ( also 2^(-1) abwärts)
(9)
Einschränkungen bei Arise Alpha
eine Operation per Zuweisung zum Beispiel: x = a + b und nicht x = a + b + c
extra Zuweisung notwendig pro rechtsseitige Arrayindizierung: x = y und nicht x[a] = y
keine Array-Indizierung bei return Befehlen: also return x und nicht return x
als direkte Rückgabewerte bei return Behlen nur return 2.5 und nicht z.B. return (2,3) ; arrays funktionieren also nicht, nur Skalare
keine direkt rekursive Funktionen
diese müssen mit einer indirekten Rekursion ersetzt werden
keine multi-dimensionale arrays, lediglich Vektor und Matrix sind möglich
(10) multi-threading mit "events"
benutzerdefiniert und Systemvoraussetzung (so dass multi-tasting per System möglich ist)
(11)
Array safety
checks for array equality and indexOutOfRange
konsequent umgesetzt bezüglich Statik (z.B. copy von Vektor auf Matrix geht nicht) und Speicherkonsistenz
allerdings Matrizen könnten z.B. mit unterschiedlichen Dimensionen aber gleicher Gesamtgröße kopiert werden
aus Entwicklungszeitgründen
bei Fehler wird Programm beendet
Kopieren ausschließlich statischer arrays wird allerdings auch nur zur run-time überprüft - aus Entwicklungszeitgründen
(12) Maschinencodeinterface 9,1,3,3b
dynamisches Maschinencode interface mit "delta"
delta(299,120 , 300,120)
delta(x,y)
delta(200,120 , x)
delta(5,100, y) // schreibt die Zahl 100 nach y
(13)
Ergebnisregister an Prozessoreinheiten als temporären Speicher verwenden
innerhalb eines Events
(14)
Bei automatisierten Kopiervorgängen, bei denen Quell- und/oder Zieladresse von einer Variablen abhängen
gibt es zwei Prozessorerweiterungen.
Dies ist wichtig wenn man z.B. einfach Daten automatisch (also z.B. Massenweiße) von USB - Stick auf Festplatte kopiert.
Die Erste ist für von einem offset/Variablen abhängige Quelladresse.
Die Zweite ist für eine von einem offset/Variablen abhängige Zieladresse.
[data]offsetting mit internalDataOffsetCopy
read from RAM
2 Varianten (read result from register, oder in einem Wisch)
// internalDataOffsetCopy for data offsetting
// device represents an extension for the core delta processor
// otherwise data offsetting would not be possible
// reads an address given by an offset (given by a previously to a register written offset date)
// writes the result date to the result register AND to Delta date
write to RAM
fast advanced copy (faster than software copy to offset)
// internalDataOffsetCopy for data offsetting
// device represents an extension for the core delta processor
// otherwise advanced copy would not be possible EASILY
// copies a Delta date to a specific address given by an offset (given by control date)
(15)
software copy to offset (further offsetting)
->eine Instruktion wird dynamisch geschrieben
->Gemeinsamkeit und Unterschied zu write to RAM
(16)
das RW-bit und die Daten-Befehlsbeziehung
Spezialfall: Instruction-Register 4
copy to offset - Software - Fälle
(17)
Compilerdefinition und -konzept:
Compiler fügt eine Sequenz von code zusammen
Parser
Module
(18)
der compiler
Parser
Module
Funktionskompilierung mit typhaftem Programmbaum [und "outer rim"]
(19)
compiler - Optimiertheit
hochoptimiert auf Statik - außer auf manche elektrotechnische Interna (-> interne Geräte interop)
und außer bei rechtsseitigen Variablenzuweisungen (?)
und außer bei Variablenzuweisungen und return Befehlen (aus Entwicklungszeitgründen wird nicht der Statikfall berücksichtigt) (?)
Optimierung bei Kopiervorgang statischer und dynamischer arrays ?!
// für einen Kopiervorgang von statischen arrays muss dessen Größe berücksichtigt werden
// ->Optimierung; z.B. 2 Elemente werden direkt kopiert - mehr werden über eine Schleife kopiert
// bei dynamischen arrays wird immer über eine Schleife kopiert
Compiler Optimierungensoptionen
(20)
Daten im Speicher - absolut (von Programmen geschrieben und von resourceManager gelesen)
backjump date for dynamic memory allocation and multi-threading for resource manager
Daten im Speicher - RELATIV (von resourceManager verwaltet)
data processing information
dynamicIDcurrent
metaInfoOffsetCurrent
offsetSource
endOffsetSource
offsetDestination
endOffsetDestination
sizeDimension1source
sizeDimension2source
arrayPosSource
arrayPosDestination
sizeDimension1destination
sizeDimension2destination
lengthArraySource
lengthArrayDestination
arrayPosNormal
arrayPosNormalEnd
xArraySource
yArraySource
xArrayDestination
zArrayCurrent
---
skalare Variablen
---
statische ein dimensionale Arrays
---
statische zwei dimensionale Arrays
---
dynamic array meta information (1):
offsetDynamicArrays
---
dynamic array meta information (2):
offset
endArrayOffset // optimization date for copying the arrays
sizeDimension1
sizeDimension2
redimSpace
---
dynamic arrays
(21)
Entwicklungsprozess
erst Delta Prozessor
dann Events und Arise Konzept
dann Arise Alpha
dann Events
virtueller Monitor VGA
clock chip
Grafikchip
emulative Tastatur & Maus PS2
PS2 - chip
Hauptprozessor
Erweiterungsmöglichkeiten (Delta-System)
z.B. USB (z.B. auch für Drucker), eSATA (z.B. auch für optisches Laufwerk), Netzwerk, SD-Card-Reader
parallel dazu VLSI - Design
dann Events - Software
dann Arise-Events IDE
---
Arise Alpha IDE
core programming option
Wenn man nicht für Events programmiert, sondern zum Beispiel events programmiert, dann
sind bestimmte API - Elemente nicht definiert- zum Beispiel die Speicherallokation über Events.
Wenn man also komplett eine eigene Applikation schreibt, bitte Häkchen für core programming setzen.
Achtung: Laufzeitfehler bei arrays werden nicht mehr abgefangen...
Also: Hiermit, wie versprochen, die Spezifikation meiner Programmiersprache 8-) !!!
DER AKTUELLE STAND:
Sub-Projekt Programmiersprache: bug-fixing im Bereich der arrays.
Sub-Projekt Betriebsystem: kernel - Konzept ist im Detail fertig, Treiber und GUI Konzepte sind fertig
Sub-Projekt Mikrochips: Chip - Design ist ca. zur Hälfte fertig; der Prozessor-core ist implementiert. Es fehlen so aufwendige Dinge wie Speicher,
welche ich automatisiert implementieren werde (automatisiert z.B. auf Grund von address-decoding).
Sub-Projekt Graphik-chip: debugging von Texturierung; das Kommunikationsprotokoll für zwischen Grafikchip und Hauptprozessor (also Betriebsystem, da auf ROM) ist fertig implementiert 8-)
Jetzt zur Spezifikation meiner Programmiersprache:
Ich hoffe Ihr könnt alles entziffern (manches ist noch Stichwortweiße) bzw. verstehen :D .
Mal sehen was Ihr davon haltet.
Und hier gehts los:
Zum Verständnis: Arise heißt meine Programmiersprache, Events heißt mein Betriebsystem
(1)
Schlüsselwörter ; Bedeutung
decl ;Variablendeklaration
infinite ; Endlosschleife (ist bei meiner Programmiersprache DIE Schleife)
endInfinite
break ; Ausbruch aus der Endlosschleife
= ; Zuweisung
delta ; Maschinencode - interface; siehe unten
function ; Funktionsdeklaration (Funktionen besitzen bei mir KEINE Parameter; die Übergabe geschieht über globale Variablen)
endFunction
return ; Funktionswertrückgabe
endProgram ;Anweisung für mein Betriebsystem, das Programm zu beenden
if
else
endIf
: ; goto - Label
goto ; Sprungbefehl á la goto :)
events ; Parallelisierungsbefehl: Multi-threading; das Betriebsystem erhält wieder die Kontrolle und sieht zu wie es gemäß seiner multi-tasking/multi-threading Strategie weiter verfährt
' ; Kommentar
redim ; Redeklaration von dynamischen arrays !!! (siehe unten)
(2)
Variablendeklarationen:
Festlegung von Menge der Zahlen und die Dimension (Vektor oder Matrix und die Dimension(en))
wie in der Mathematik
Multidimensionale arrays (über zwei Dimensionen hinaus) sind (noch) nicht unterstützt
Variablennamen dürfen beliebige Bezeichnungen aufweisen - sogar Zahlen !!!
bei Zahlen ist der Variablennamen dann allerdings ein override zu einer Zahl.
Variablen müssen nach der Deklaration noch initialisiert werden, sonst steht der aktuelle Speicherinhalt drin!
(3)
Zuordnungen und Typsicherheit
Variablen müssen nach der Deklaration noch initialisiert werden, sonst steht der aktuelle Speicherinhalt drin!
statische Zuordnungen
Typ: Fließkommazahl = 8 (man muss nicht 8.0 schreiben)
Ganzzahl = 10.4 geht natürlich nicht
Operationen müssen typsicher sein. Das bedeutet, dass alle Operanten vom gleichen Typ sein müssen, wie die Zielvariable.
Bei Fehler gibt Compiler Fehlermeldung aus
array - Zuordnungen:
decl xmatrix[2,3] Natürlichezahl
xmatrix = ((2,3)(3,2)(3,3))
decl xvector[4] Natürlichezahl
xvector = (2,3,y,5)
für arrays gibt es mindestens ein Element !!! keine leere Menge !!!
das da eine Variable mindestens einen Wert speichern muss !!!
die array Definition muss stets die gleiche Größe aufweisen, wie der Ziel - array groß ist !
->Variablendefinitionskonform
(4)
dynamische Arrays:
bei dynamischen Arrays kann eine sogenannte redim space angegeben werden
Diese bestimmt wie viel Platz dass nach der tatsächlichen Größe des Arrays für eventuelle Größenänderungen noch freigelassen wird.
Größenänderungen von dynamischen Arrays geschieht über den redim Befehl.
Mit Hilfe von diesem können die Dimensionen des dynamischen arrays neu festgelegt werden.
Die darin befindlichen Daten werden zur Laufzeit entsprechend der Größenänderung umkopiert.
Der allokierte Speicherplatz bleibt nach dem redim Befehl gleich.
Eine neue redim space kann beim redim Kommando nicht angegeben werden.
Beim Überschreiten der redim space beim redim Kommando mittels der angegebenen Dimensionen wird das Programm beendet.
Syntax:
decl dynamicArray[dimension1,dimension2] 20
decl dynamicArray[dimension1,dimension2] dynamicRedimSpaceVariable
redim dynamicArray[newsize1,newsize2]
die Zuweisung der redim space kann dynamisch (per Variable) geschehen.
Die Transformation der Daten des dynamischen Arrays während eines redim Befehls geschieht nach folgender einfacher, selbsterklärender Regelung:
Wenn der array größer wird, liegen die alten Daten am Anfang darin,
wenn der array kleiner wird, werden die Daten am Ende abgeschnitten.
(5)
operationen:
a&b
a|b
a^b (XOR)
a=b
a<b
a>b (nutzt intern b<a)
a<=b
a>=b
a+b
a-b
a*b
a/b
a%b (Modulo als Fließkommazahloperation mit Natürlichezahl-Ergebnis)
a! (invert)
a~ (cast)
a>>f (shift right and fill with f)
a<<f (shift left and fill with f)
(6)
Funktionen als Methodik ("es geht wirklich nicht anders")
nicht nur als Modularisierung / reusability
nur globale Variablen, keine Parameter als lokale Variablen, da
1. Kontext sowieso gegeben (auch bei Funktionen als Methodik)
2. prinzipiell nur globale Variablen (auch keine Kapselung)
Funktionswerte (return command) müssen in die aufrufende Wertzuweisung (z.B. x[2] = functionX) passen
(7)
beliebige Zuweisung/Einführung von Binärzahlen
Wenn Sie einer Variable eine Zahl zuweisen möchten, die im Dualsystem gegeben ist, dann geben Sie einfach die 128stellige Repräsentation ein.
Dies können Sie für alle Fälle einer Einführung einer Zahl in das Arise-System erledigen (zum Beispiel auch beim Indizieren von arrays - mit Binärzahlen).
Beispiel:
x = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000
Dies gilt auch für Fließkommazahlen.
(8)
binäre Fließkommazahlen sind als binäre Ganzzahlen kodiert.
der Aufbau einer Fließkommazahl ist wie folgt:
1bit für Read/Write reserviert + 1 bit Vorzeichen ( 1 bedeutet minus; 0 bedeutet plus)
+ 62 bits Vorkommastellen ( also 2^0 aufwärts)
+ 64 bits Nachkommastellen negative Zweierpotenzen ( also 2^(-1) abwärts)
(9)
Einschränkungen bei Arise Alpha
eine Operation per Zuweisung zum Beispiel: x = a + b und nicht x = a + b + c
extra Zuweisung notwendig pro rechtsseitige Arrayindizierung: x = y und nicht x[a] = y
keine Array-Indizierung bei return Befehlen: also return x und nicht return x
als direkte Rückgabewerte bei return Behlen nur return 2.5 und nicht z.B. return (2,3) ; arrays funktionieren also nicht, nur Skalare
keine direkt rekursive Funktionen
diese müssen mit einer indirekten Rekursion ersetzt werden
keine multi-dimensionale arrays, lediglich Vektor und Matrix sind möglich
(10) multi-threading mit "events"
benutzerdefiniert und Systemvoraussetzung (so dass multi-tasting per System möglich ist)
(11)
Array safety
checks for array equality and indexOutOfRange
konsequent umgesetzt bezüglich Statik (z.B. copy von Vektor auf Matrix geht nicht) und Speicherkonsistenz
allerdings Matrizen könnten z.B. mit unterschiedlichen Dimensionen aber gleicher Gesamtgröße kopiert werden
aus Entwicklungszeitgründen
bei Fehler wird Programm beendet
Kopieren ausschließlich statischer arrays wird allerdings auch nur zur run-time überprüft - aus Entwicklungszeitgründen
(12) Maschinencodeinterface 9,1,3,3b
dynamisches Maschinencode interface mit "delta"
delta(299,120 , 300,120)
delta(x,y)
delta(200,120 , x)
delta(5,100, y) // schreibt die Zahl 100 nach y
(13)
Ergebnisregister an Prozessoreinheiten als temporären Speicher verwenden
innerhalb eines Events
(14)
Bei automatisierten Kopiervorgängen, bei denen Quell- und/oder Zieladresse von einer Variablen abhängen
gibt es zwei Prozessorerweiterungen.
Dies ist wichtig wenn man z.B. einfach Daten automatisch (also z.B. Massenweiße) von USB - Stick auf Festplatte kopiert.
Die Erste ist für von einem offset/Variablen abhängige Quelladresse.
Die Zweite ist für eine von einem offset/Variablen abhängige Zieladresse.
[data]offsetting mit internalDataOffsetCopy
read from RAM
2 Varianten (read result from register, oder in einem Wisch)
// internalDataOffsetCopy for data offsetting
// device represents an extension for the core delta processor
// otherwise data offsetting would not be possible
// reads an address given by an offset (given by a previously to a register written offset date)
// writes the result date to the result register AND to Delta date
write to RAM
fast advanced copy (faster than software copy to offset)
// internalDataOffsetCopy for data offsetting
// device represents an extension for the core delta processor
// otherwise advanced copy would not be possible EASILY
// copies a Delta date to a specific address given by an offset (given by control date)
(15)
software copy to offset (further offsetting)
->eine Instruktion wird dynamisch geschrieben
->Gemeinsamkeit und Unterschied zu write to RAM
(16)
das RW-bit und die Daten-Befehlsbeziehung
Spezialfall: Instruction-Register 4
copy to offset - Software - Fälle
(17)
Compilerdefinition und -konzept:
Compiler fügt eine Sequenz von code zusammen
Parser
Module
(18)
der compiler
Parser
Module
Funktionskompilierung mit typhaftem Programmbaum [und "outer rim"]
(19)
compiler - Optimiertheit
hochoptimiert auf Statik - außer auf manche elektrotechnische Interna (-> interne Geräte interop)
und außer bei rechtsseitigen Variablenzuweisungen (?)
und außer bei Variablenzuweisungen und return Befehlen (aus Entwicklungszeitgründen wird nicht der Statikfall berücksichtigt) (?)
Optimierung bei Kopiervorgang statischer und dynamischer arrays ?!
// für einen Kopiervorgang von statischen arrays muss dessen Größe berücksichtigt werden
// ->Optimierung; z.B. 2 Elemente werden direkt kopiert - mehr werden über eine Schleife kopiert
// bei dynamischen arrays wird immer über eine Schleife kopiert
Compiler Optimierungensoptionen
(20)
Daten im Speicher - absolut (von Programmen geschrieben und von resourceManager gelesen)
backjump date for dynamic memory allocation and multi-threading for resource manager
Daten im Speicher - RELATIV (von resourceManager verwaltet)
data processing information
dynamicIDcurrent
metaInfoOffsetCurrent
offsetSource
endOffsetSource
offsetDestination
endOffsetDestination
sizeDimension1source
sizeDimension2source
arrayPosSource
arrayPosDestination
sizeDimension1destination
sizeDimension2destination
lengthArraySource
lengthArrayDestination
arrayPosNormal
arrayPosNormalEnd
xArraySource
yArraySource
xArrayDestination
zArrayCurrent
---
skalare Variablen
---
statische ein dimensionale Arrays
---
statische zwei dimensionale Arrays
---
dynamic array meta information (1):
offsetDynamicArrays
---
dynamic array meta information (2):
offset
endArrayOffset // optimization date for copying the arrays
sizeDimension1
sizeDimension2
redimSpace
---
dynamic arrays
(21)
Entwicklungsprozess
erst Delta Prozessor
dann Events und Arise Konzept
dann Arise Alpha
dann Events
virtueller Monitor VGA
clock chip
Grafikchip
emulative Tastatur & Maus PS2
PS2 - chip
Hauptprozessor
Erweiterungsmöglichkeiten (Delta-System)
z.B. USB (z.B. auch für Drucker), eSATA (z.B. auch für optisches Laufwerk), Netzwerk, SD-Card-Reader
parallel dazu VLSI - Design
dann Events - Software
dann Arise-Events IDE
---
Arise Alpha IDE
core programming option
Wenn man nicht für Events programmiert, sondern zum Beispiel events programmiert, dann
sind bestimmte API - Elemente nicht definiert- zum Beispiel die Speicherallokation über Events.
Wenn man also komplett eine eigene Applikation schreibt, bitte Häkchen für core programming setzen.
Achtung: Laufzeitfehler bei arrays werden nicht mehr abgefangen...