41
Softwareentwicklung / Re: Falscher Link in Cross-Compiler Artikel
« am: 06. September 2016, 11:32 »
Danke für den Hinweis, ich hab es geändert.
18. April 2024, 22:55
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.
Da du bei deiner Antwort nicht weiter auf die Übersetzung von UTF8 auf CP437 eingegangen bist, gehe ich davon aus, dass ich das so Umsetzen kann?Hups, ganz vergessen.
Tatsächliche habe ich sowas schon versucht. Ich habe also für Pos1 den dazu gehörigen Keycode (71) an meine Ausgabe gesendet und dann entsprechend abgefragt.Was meinst du mit Ausgabe? Der Keycode ist doch eine Eingabe und keine Ausgabe?
Wieso macht das den Kernel einfacher? Ich habe mir Syscalls als einen Funktionsaufruf einer Funktion im Kernel vorgestellt. Und bei einem Interrupt wird der aktuelle Status einfach wie jeder andere gesichert (ausser, dass der Stack weiterverwendet wird). Das hat bis jetzt auch gut funktioniert.Wenn du in den Syscall-Implementierungen globalen Zustand benutzt, brauchst du Locking, weil du nicht weißt, an welcher Stelle der Syscall von einem anderen Task unterbrochen werden könnte, der den globalen Zustand ebenfalls liest oder sogar ändert.
RDTSC gibt einen Zähler zurück, welcher mit einer nicht weiter definierten Taktrate incrementiert wird. Diese ist aber nicht gleich der Anzahl Takte, die bisher vergangen sind, da sich der Takt an die entsprechenden Verhältnisse anpasst, aber der Takt mit der der Zähler hochgezählt wird bleibt gleich.Ich dachte, du willst einfach nur Zeit messen? Dafür ist RDTSC auf den meisten CPUs ziemlich gut geeignet.
kc2c(int keycode) greift auf die Array zu, die die keycodes mappen. soweit so klar. Mein kprintf funktioniert z.B. mit kprintf("test"); Das meinst du mit "machst du ja für Strings schon", oder? Irgendwie muss ich meinem kprintf doch aber %c beibringen.Okay, dein Ansatz sieht gut aus. Ich glaube, ich habe missverstanden, an welcher Stelle genau dein Problem liegt.
was bedeutet eigentlich das [0x7f]?Das ist die Arraylänge (und sie ist natürlich falsch, müsste eins mehr, also 0x80 sein). Ich bin davon ausgegangen, dass deine möglichen Keycodes von 0 bis 127 gehen, dass du also direkt die Scancodes nimmt und die Funktion nicht für Breakcodes aufrufst. Das stimmt natürlich auch nur am Anfang, weil es noch die erweiterten Scancodes gibt, die aus mehreren Bytes bestehen.
static const char sc_to_char[0x7f] = {
0, 27 /* Escape */, '1', '2', '3', ...
};