Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[OS] [C++] Klawiatura - niepoprawny zestaw znaków? + IRQ1 'nie chce' sie wywoływać

Ostatnio zmodyfikowano 2014-03-09 15:16
Autor Wiadomość
Brezniew
» 2014-03-08 16:35:11
Chodzi oto np. jak używasz takich rzeczy jak new, delete itp. Kod w C++ jest często wolniejszy nisz kod w C w przypadku pisania systemu ze względu na wyższy poziom abstrakcji
Gdzie tam.
Ale jeśli masz zaimplementowane stdlibc++. A on raczej niema na tym etapie to niemożliwe.

A jeśli już potrzebujesz czegoś czego nie da zaimplementować w samym c to użyj asm inline, makra z asm-em bądź mechanizmów wbudowanych w kompilator takich jak __attribute__, co jest o wiele wygodniejsze nisz w C++.
Te same rozszerzenia GCC są dostępne i w C++.
A to podałem dla przykładu jak by potrzebował dodatkowych rozszerzeń a nie że tego w c++ niema.

@edit w C++ nie ma są w gcc i g++( to też gcc ) a np. na Visual Studio C++ to używa się dyrektywy
#pragma
P-105866
Elaine
» 2014-03-08 17:55:05
Ale jeśli masz zaimplementowane stdlibc++.
Tylko do czego miała by być potrzebna pełna implementacja biblioteki standardowej C++? Większość ficzerów C++ nie wymaga żadnego wsparcia ze strony biblioteki runtime (a co dopiero biblioteki standardowej), a te, które wymagają — czyli RTTI i wyjątki — bardzo potrzebne w kernelu nie są.
P-105870
Brezniew
» 2014-03-08 18:24:56
W każdym rozwijanym systemie prędzej czy później jest zaimplementowana minimalnie biblioteka standardowa. Niekoniecznie zgodna ze standardem bo implementuje się tylko to co się używa w kodzie jak w np. Linux-ie. Ale jeśli piszesz system od zera to z własnego doświadczenia wiem że pisanie go w samym C++ sprawia mnóstwo problemów. A napisanie libc jest o wiele prostsze niż stdlibc++. Gdy już się taką bibliotekę ma to sprawa jest o wiele prostsza mamy jakieś podstawy, a nie tylko kompilator i procesor.
P-105874
MrPoxipol
» 2014-03-08 18:25:47
Pisze po polski
Nie, nie piszesz ;)
na ras
 i to co pekfos podał.
P-105875
Elaine
» 2014-03-08 19:30:42
Co do porównania setów 1 i 2 to znaki te nie pasują do żadnego z nich zarówno przed jak i po translacji.
Pasują do setu 1, jeśli odjąć od kodu jeden. Może gdzieś w kodzie przez przypadek dodajesz jeden do kodu? Co to jest Key?


Ale jeśli piszesz system od zera to z własnego doświadczenia wiem że pisanie go w samym C++ sprawia mnóstwo problemów.
Jakich problemów?

A napisanie libc jest o wiele prostsze niż stdlibc++.
Spytam jeszcze raz: do czego miałaby być potrzebna pełna implementacja biblioteki standardowej C++? Pisałem kernel w C++, ani razu podczas tego nie pomyślałem "cholera, tak bardzo przydałoby mi się właśnie <valarray>, szkoda, że nie mam pełnej biblioteki standardowej". W praktyce powinno wystarczyć coś w rodzaju std::vector, std::list (lub boost::intrusive::list) i kilku rzeczy z <utility> i <algorithm>. Nie ma tego wiele, i nawet nie trzeba tego implementować samemu, można podwędzić kod z libc++.
P-105878
kubawal
Temat założony przez niniejszego użytkownika
» 2014-03-09 15:16:13
Pasują do setu 1, jeśli odjąć od kodu jeden. Może gdzieś w kodzie przez przypadek dodajesz jeden do kodu? Co to jest Key?
Faktycznie, pasują. Może po prostu zaimplementuje set 1 i będę miał święty spokój. Tylko co jeśli do mojego systemu podepnę klawiatuę inna niż PS/2...

\edit: po zmianie na set 1 jak najbardziej działa.
P-105922
1 2 « 3 »
Poprzednia strona Strona 3 z 3