81
Offtopic / Re: iPod touch mit Linux?
« am: 07. November 2011, 19:57 »
Ne, das heißt ich hab natürlich selber mal irgentwas gefunden, weiß aber nicht mehr wo, und habs jetzt auf die Schnelle auch nicht wieder gefunden.
01. November 2024, 02:04
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.
Das mit dem Multitasking hab ich nicht bedacht, danke für den Hinweis. Ich möchte eigentlich vermeiden, dass man für jede Rückgabe von (abgesehen von ganz einfachen Datentypen) malloc() und free() aufrufen muss.ich hatte eine durch einen Pointer (Rueckgabe in eax) beschriebene Stelle im Speicher in Augen. (Wofuer 16 byte in der Runtime-lib Reserviert sind.Das geht auf jeden Fall in die Hose, wenn der Platz in der Runtime-Lib nur ein einziges mal vorhanden ist dann ist Dein Programm nicht multithreading tauglich. Wenn Du anderen Speicher benutzen möchtest dann benötigst Du im Endeffekt eine Art malloc (was der Callee aufruft) ein ein free (was der Caller aufruft). Das der Callee dem Caller einen Pointer gibt wo er das Ergebnis hingelegt hat führt IMHO grundsätzlich zu unlösbaren oder überteuerten Problemen.
Ich hatte eigentlich an eine andere Idee im Sinn.Dann erzähl doch mal. Das was Du da geschrieben hast klingt auf jeden Fall nicht nach einer Methode die von C oder C++ oder einer anderen üblichen Programmiersprache unterstützt wird. Ein Compiler-Feature das man nur nutzen kann wenn man in Assembler programmiert nützt auch nichts da man dafür ja keine Hochsprache benötigt. Für welche Programmiersprache willst Du überhaupt einen Compiler bauen?Im Default-Fall wird ecx unbestimmt von einer Funktion zuruekgeeben.Trotzdem ist ein Register weg das man auch sinnvoll nutzen könnte. Das entspricht auf jeden Fall nicht der Philosophie das Features die nicht benutzt werden auch nix kosten dürfen.
Im Fehlerfall muss die Funktion die Ruecksprungaddresse mit 0 ueberschreibenAha, und wo führt dann das RET hin?
Entschuldige Bitte die direkte Frage aber ein erfahrener Assembler-Programmierer bist du nicht gerade oder?
Einen Fehler zurück zu melden den der Caller nach belieben ignorieren darf ist auf jeden Fall keine strukturierte Vorgehensweise, der Callee meldet den Fehler doch nicht ohne Grund und wahrscheinlich sind die normalen Rückgabewerte dann auch unbrauchbar (schließlich signalisiert ein Fehler doch für gewöhnlich das die Funkion nicht korrekt bis zum regulären Ende durchlaufen konnte).Wahrscheinlich lass ich die betroffenen Register mit irgendeinem Standartwert z.B. "0" füllen. (Oder der edx mit der Rücksprungadresse (auch bei int64), was die Fehlerrückkehrroutine vereinfachen würde.)
Also ich denke, es ist beides in etwa gleich schwer. Entscheidend ist dabei aber auch das persönliche Interesse bzw. die Begabung für das eine oder andere. Momentan scheint man mit OS-Dev jedoch besser bedient was Quellen anbelangt (lowlevel, osdev.org, osdever.net usw.), als ich mich mal etwas nach dem Thema Compiler umgesehen habe, konnte ich nicht allzu viel finden.Da muss ich dir recht geben, warum weiß ich auch nicht. Vermutlich gibt es mehr Hobbyprogrammier, die ein OS programmieren wollen (ich denk mal das "Ich will so sein wie Linus Torwals" spielt bei manchen 'ne Rolle.)
Ich finde auch, dass man bei einem OS schneller einen Einblick bekommt, wenn man den Source eines "großen" OS durchsieht. Mich etwas im Linux-Kernel umzusehen fiel mir deutlich leichter als den Code des FreeBASIC-Compilers zu kapieren.Naja, ich denk mal Linux wird ja von sehr vielen Leuten bearbeitet, und muss deshalb auch logisch aufgebaut werden, während FreeBasic erst mal nur von ein paar Leuten entwickelt wurde, die sich erst mal wenig um die Quellcode-Verzeichnis-Struktur gekümmert haben.
Letztendlich sehe ich aber keine wirkliche Relevanz hinter der Frage. Entscheidend, ob man sich mit dem einen oder anderen beschäftigt, sollte vor allem das persönliche Interesse sein. Wobei ich allerdings davon abrate, sich mit beidem zur gleichen Zeit zu beschäftigenDa hast du recht. Deshalb hab ich mein OS-Projekt beerdigt. (War eh nix außer eine kprintf() Function in FB.)
Das ist eine gaaanz schlechte Idee.
Ich möchte in meinen Quelltexten ein "#include <SDL.h>" machen und dann die aktuelle SDL-Version benutzen und nicht bei jeder neuen (100% kompatiblen) SDL-Version meine Sourcen anpassen müssen. Das wäre Ärger zur Compilezeit. Zur Laufzeit würdest du also immer gegen eine fixe Lib-Version linken, was Library-Updates unmöglich macht. Wenn du stattdessen ein "nimm die aktuellste Version der Lib" möchtest, dann muss dein Runtime-Loader trotzdem /ear/lib/* traversieren und ziemlich viel Stringmatching machen.
Eine Möglichkeit wäre, in /ear/lib/* nur Symlinks auf die jeweils aktuellsten Versionen zu haben, die dann in /ear/lib/libs/libname-version/libname-version.so liegen. Aber dann kannst du die auch gleich das Unixprinzip "/ear/lib/libname.so -> /ear/lib/libname.so.version" benutzen...
Das halte ich für eine gute Idee (deinen Vorschlag)Alles in Allem Danke ich dir aber für deine konstruktive Kritik. Ich versuche halt nur, das Ein-Programm = Ein-Ordner-System (welches ich persönlich bevorzuge) mit den Ansprüchen, die bei Linux vorherrschen (Gemeinsame Bibliotheken, Einfache Nutzung über's Shell, etc.) zu verbinden.Das geht einfach nicht, weil es zwei völlig unterschiedliche Paradigmen sind. Der einzige Ansatz, den ich da habe wäre eine doppelte Verwaltung: Also Programme werden in ihren eigenen Ordner nach /apps/appname/* installiert, aber installieren Symlinks nach /usr/bin, Manpages nach /usr/share/man, Konfigurationen nach /etc, ...). Wenn man regelmäßig nach toten Symlinks sucht, wird man die Reste auch wieder zuverlässig los.
Schwierig. Ich bin dafür, /usr unter Linux abzuschaffen, weil es keine besondere Bedeutung mehr hat. Ursprünglich galt ja, dass / nicht von der Paketverwaltung verwaltet wird (Basissystem), /usr hingegen schon und /usr/local wieder nicht. Inzwischen werden / und /usr beide verwaltet, ein shared-usr ist mit heutigen Distributionen nur noch schwierig (Xorg legt die Standardkonfig unter /usr/share/X11 ab, noch geht aber /etc/X11!) und die Vorteile nutzt nahezu niemand mehr.Naja, ich find eine Trennung zwischen Systemtools (/bin) und root-Systemtools (/sbin), die beim Start vorhanden sein müssen, sowie "normalen" Programmen (/usr/bin) schon sinvoll. Wobei dir entgegen kommt, das es /usr in der FHL nicht gibt.
1. Es gibt keine Möglichkeit Programme außerhalb von Respos vernünftig dem apt-system zuzufügen.Doch, und zwar der gesamte Baum unterhalb von /usr/local (der unterliegt nicht der Paketverwaltung). Beispielsweise liegt /usr/local/bin in $PATH und /usr/local/lib wird ebenfalls beachtet.
3. Programme speichern ihre Benutzerdaten direkt in das ~ - Verzeichniss, was dazu führt, das dieser in Speicherdialogen (die versteckte Daten anzeigen) überquillt.Richtig, allerdings wird mit ~/.local und ~/.config versucht, da wieder ein bisschen Übersicht reinzubringen.
Ansonsten habe ich an deinem System zu bemängeln, dass die Suche nach z.B. einer Lib dazu führt, dass sämtliche Verzeichnisse unterhalb von /ear/lib/* vom Loader durchsucht werden müssen und dass es prinzipiell mehrere gleichnahmige Dateien geben kann.
Wenn du /ear/proc/ als "eigene Dateien" betrachtest, verkennst du, dass dieser Ordner irgendwo unter /home liegen sollte - weil er nutzerspezifisch ist.