Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - SSJ7Gohan

Seiten: 1 [2] 3 4 ... 20
21
Lowlevel-Coding / Merkwürdiges Problem
« am: 11. February 2006, 12:11 »
Was hast du denn jetzt genau für ein Problem? In Ring0 funktionieren die Tasks, in Ring3 nicht? Wenn sie in Ring3 laufen gibts ne GPF? Das liegt dann warscheinlich an deinem Multitasking Code, würde ich mal annehmen.
22
Offtopic / Neues Jahr, neue Website, bessere Website?
« am: 11. February 2006, 10:28 »
Naja, zumindest bei mir (FireFox) überlappen sich einige Überschriften und Texte. Du solltest besser nicht absolute Positionierung benutzen, da die Schrift überall anders aussehen kann. Die Seite wird dadurch bei kleineren Auflösungen schwerer lesbar.
Ausserdem hast du wenig Informationen über dein OS selber. Was hebt dein OS so von anderen ab? Was ist das Ziel von deinem OS?
Als OS Developer wäre auch die interne Struktur des OS interessant.
EDIT: Naja, über die Struktur steht ja doch etwas drinnen, ich habs nur nicht sofort gefunden. :D
23
OS-Design / Templates/Generic Types für eigene Programmiersprache
« am: 09. February 2006, 20:28 »
Achso, ja, das wäre auch eine Möglichkeit. Das könnte man ja später mal ergänzen, ich werde erstmal die Methode nehmen, bei der ich einfach alle Typen durch die Richtigen ersetze.
24
OS-Design / Templates/Generic Types für eigene Programmiersprache
« am: 09. February 2006, 19:13 »
Ja, das wäre dann Autoboxing. Allerdings unterstützt meine Sprache wie schon gesagt Strukturen, die sich in keine andere Klasse casten lassen (auch nich in die Superklasse), für die müsste ich dann automatisch einen Wrapper generieren lassen oder den Wrapper auch zu nem Template machen.

Naja, auf die Ausführungsgeschwindigkeit würde das nicht gehen, aber auf die Ladezeit für ein Programm, da der Zwischencode ja erst in vernünftigen Bytecode übersetzt werden muss.
25
OS-Design / Templates/Generic Types für eigene Programmiersprache
« am: 09. February 2006, 18:23 »
Hier mal grad ein Beispiel in Pseudocode:
class <TYPE> {
static TYPE add(TYPE a, TYPE b) {
return a + b;
}
}

Du überladene Operatoren funktioniert dass, egal, ob man jetzt eine Wrapper-Klasse für Integer, Floats, Chars oder was-auch-immer übergibt.

Das Problem bei Shared Libraries ist, dass ein komplett anderer Code erzeugt wird, wenn man einem Template z.B. ein Objekt statt einem Integer übergibt. Der Bytecode müsste extrem abstrakt sein, dann kann man auch gleich den Sourcecode der Shared Library veröffentlichen, statt solchen Bytecode zu benutzen. Ausserdem würde das Ausführen langsammer, weil die VM die abstrakten Instructions noch in kleinere Umwandeln müsste.

Ich werde wohl die erste Methode benutzen, Shared Libraries müssten dann entweder als Source vorliegen, oder als Templateargumente können nur die Typen benutzt werden, für welche die Library kompiliert wurde. Wenn man andere benutzen will, kann man die ja immernoch in Wrapperklassen stecken.
26
OS-Design / Templates/Generic Types für eigene Programmiersprache
« am: 09. February 2006, 16:19 »
Hi, ich arbeite im Moment an einer eigenen (bytecode basierten) Programmiersprache, und ich finde keinen guten Weg, um Templates zu implementieren. Eine Möglichkeit wäre, die Templates vom Compiler einfach durch Einsetzen der richtigen Typen anstatt der Typ-Argumente zu kompilieren. Dann können Shared Libraries (von denen der Source unbekannt ist), von denen der Code unbekannt ist, Templates aber nur eingeschränkt nutzen. C++ basiert ja darauf, wie löst C++ dieses Problem? (oder ist das in C++ auch nicht möglich?) Eine andere Möglichkeit wäre, alle Primitiven Objekte in Wrapperklassen zu stecken (die nicht-primitven Objekte basieren eh alle auf einer Grundklasse) und dann das Template nur für die Grundklasse zu kompilieren. Durch Operator Overloading könnte man alle Typen einheitlich handhaben. Diese Methode würde ich gerne vermeiden, da das sehr lahm wäre, ausserdem wäre sie schwer zu implementieren. (Die Programmiersprache hat sehr viele Primitive und Strukturen, die nicht in andere Typen gecastet werden können, also auch nicht in die Grundklasse)
27
Lowlevel-Coding / Mal eine Frage über Button sprich zur GUI
« am: 08. February 2006, 13:58 »
Ich würde dir empfehlen, dass der Maustreiber einfach bei jedem Klick die GUI (also den WindowManager oder was auch immer) aufruft, und die GUI dann überprüft, ob die Koordinaten der Maus auf irgentein Control passen.
28
Lowlevel-Coding / Merkwürdiges Problem
« am: 06. February 2006, 20:56 »
Ich denke, das kann nur an einem Problem mit copy liegen. Ich bin mir aber nicht ganz sicher, wie copy verwendet werden muss, ich glaube aber, man muss das /B vor jede Datei stellen. Das makefile scheint aber richtig zu sein.
29
Lowlevel-Coding / Merkwürdiges Problem
« am: 06. February 2006, 19:47 »
Woher weiß der Kernel denn, an welcher Addresse im Image die Tasks liegen? Eigentlich kann das Problem nur bei Copy liegen.
30
Lowlevel-Coding / Eigene Bytecodebasierte Sprache
« am: 03. February 2006, 18:29 »
Nein, in der JVM wird er danach nicht entfernt. Er bleibt auf dem Heap bis eine Garbage Collection durchgeführt wird. Das belastet den Garbage Collector - fast alle Verfahren dafür hängen von der Anzahl der Objekte ab, und Heapallokation ist auch bei den besten GC Methoden schneller. Man kann zwar durch Analysieren des Quellcodes herausfinden, ob ein Objekt nur lokal gebraucht wird, dazu muss man aber alle Methoden, die das Objekt als Parameter erhalten, analysieren - was Zeit kostet und in andere Optimierungen investiert werden könnte.
31
Lowlevel-Coding / Eigene Bytecodebasierte Sprache
« am: 03. February 2006, 11:25 »
Nein, bei der Java VM werden die Operanden und Zwischenergebnisse auf einem Stack gespeichert. Die Objekte, Array usw. werden alle im Heap abgelegt.
32
Lowlevel-Coding / Eigene Bytecodebasierte Sprache
« am: 31. January 2006, 18:20 »
Naja, man kann sich streiten, wie komplex die Sprache sein sollte. IMHO ist es dem Programmierer zumutbar, Variablen, die nur in einer Funktion verwendet werden, als lokal zu deklarieren, wenn ich mir dafür aufwendige Analysen der gesammten Anwendung ersparen kann. Der Programmierer muss ja nicht alle Möglichkeiten nutzen, die er hat, wenn er suboptimalen Code haben will. Der just-in-time Compiler kann ja immernoch optimieren, wenn das erwünscht ist. (Als JIT kommt natürlich ubcc zum Einsatz :D) Ausserdem kann der Hochsprachenkompiler bei Anweisungen wie System.out.println("ein" + "string" + "wird" + "aus temporären strings erstellt und ausgegeben"); so viel besser kompilieren.
33
Lowlevel-Coding / Eigene Bytecodebasierte Sprache
« am: 31. January 2006, 15:40 »
Ja, das ist zwar möglich, aber dazu muss sehr viel Code analysiert werden, und das ist ja bei der Just-In-Time Kompilierung nicht sehr erfreulich.
34
Lowlevel-Coding / Serielle Maus
« am: 30. January 2006, 21:17 »
Ohne mich mit der Maus beschäftigt zu haben, würde ich sagen, du addierst einfach die Bytes und interpretierst die höchstwertige Stelle als Vorzeichen.
35
Lowlevel-Coding / Eigene Bytecodebasierte Sprache
« am: 30. January 2006, 15:33 »
unsigned Datentypen sind oft nützlich, wenn man einen großen Zahlbereich hat, aber keine negativen Zahlen für etwas verwendet. Klar kann man das immer umrechnen, aber das verbraucht Rechenzeit. Wenn man einen unsigned Wert speichern muss und man nur signed Datentypen zur Verfügung hat, muss man entweder immer umrechnen, oder mehr Speicher nutzen, als eigentlich benötigt wird. Die leichtere Implementation ist kein Argument, da meinen Just-In-Time Compiler eh irgentwann man .NET unterstützen sollte, und ich so überhaupt keinen Arbeitsaufwand spare.

Ausserdem fehlt mir die Stackallokation, z.B. für Strings, die nur eine kurze Lebensdauer haben. Realisiert wird das in meiner Hochsprache durch ein Schlüsselwort local, das bewirkt, das eine Variable oder ein Parameter auf dem Stack allokiert wird, und nicht in ein Feld geschrieben werden darf.

Wünschenswert wären auch Strukturen, die anders als Klassen keine Laufzeitinformationen speichern. Wenn man ein Array von 10000 Objekten hat, und jedes muss 4 Bytes für die Klasse, der es angehört mitspeichern, verbrauche ich schonmal 40000 wenn jede Struct nur aus zwei Byte besteht, sind das 200% mehr verbrauchter Speicher. Ausserdem kann ich so leichter auf Daten im Speicher zugreifen, die keine Objektinformationen enthalten. In meiner Hochsprache ist etwa sowas möglich: "byte[] array = unsafe(<Speicheraddresse>);", um einfach auf Speicherstellen zugreifen zu können, ohne zusätzliche Pointer Datentypen einzuführen, welche in ihrer von C bekannten Syntax auch das Parsen sehr viel schwerer machen würden.

Eine große Standardbibliothek ist eigentlich unvermeindlich für eine portable Sprache, die auf Bytecode basiert. Normale Anwendungen werden bei in meinem Just-In-Time Compiler definitiv nicht nativen Code nutzen dürfen, da der Compiler im Kernel läuft, und eine Anwendung sonst das gesammte System zerstören könnte. Daher braucht die Sprache eine Bibliothek, die alle Funktionen des Betriessystems abdeckt, darunter Threads/Prozesse, verschiedene Sachen wie Zeitzonen, länderspezifische Codierungen von verschiedenen Sachen, E/A für Netzwerk, Dateien und Grafik (naja, das zählt man normalerweise nicht zu den I/O Funktion), usw.
36
Lowlevel-Coding / Eigene Bytecodebasierte Sprache
« am: 29. January 2006, 13:32 »
Ne, mein bytecode wird etwa so aussehen, wie der Zwischencode meines JIT Compilers, und mehrere Sprachen unterstützen.

Einen Assembler für den Bytecode habe ich schon mehr oder weniger fertig, der Hochsprachencompiler kann bisher aber noch keine Funktionsaufrufe kompilieren.
37
Offtopic / OOP mit Ansi-C
« am: 28. January 2006, 17:20 »
Du kannst dieses Problem genauso lösen wie C++ es löst: vtables (Funktionspointer innerhalb des "Objektes" (also der struct). Ausserdem musst du den this-Pointer als Funktionsargument übergeben.

Was soll das denn für ein Projekt werden? Wenn es kein ausgereiftes 3D Spiel wird, könnte man auch Java und C# verwenden, wobei ich Java C# vorziehen würde. :D
38
Offtopic / VMWare Player: Abgespeckte Gratisversion von VMWare
« am: 28. January 2006, 16:20 »
Man kann auch eigene benutzen. Man könnte z.B. mit qemu ein OS auf ein Image installieren, und das dann mit VMWare Player abspielen.
39
Lowlevel-Coding / Fragen zum Speicher
« am: 28. January 2006, 15:12 »
Auf manchen Multiprozessorsystem kann es durchaus sein, dass der APIC an einer anderen Stelle ist. Die normale Addresse trifft nur auf einige Standardkonfigurationen zu, wobei aber fast kein System diesen Standardkonfigurationen entspricht. Standardkonfigurationen sind für Systeme, die IMMER 2 Prozessoren haben, also wo das Motherboard garkeine andere Prozessorenanzahl zuläst. Das ist bei keinem mir bekannten Desktop Prozessor/Motherboard so.

Und warum sollte man nur die häufigen Fälle beachten, wenn man mit ein wenig Mehraufwand ein OS hat, das den Intel Spezifikationen entspricht?
40
Lowlevel-Coding / Fragen zum Speicher
« am: 28. January 2006, 13:24 »
Soweit ich weiß, sind die oberen 20 MB der 4 GB für Memory Mapped Devices reserviert.
APIC kann man genauso wie Grafikkartenspeicher über MSRs und Grafikarten/VGA/was-auch-immer Register programmieren.
Seiten: 1 [2] 3 4 ... 20

Einloggen