[OS] [C++] Klawiatura - niepoprawny zestaw znaków? + IRQ1 'nie chce' sie wywoływać
Ostatnio zmodyfikowano 2014-03-09 15:16
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 |
|
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ą. |
|
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. |
|
MrPoxipol |
» 2014-03-08 18:25:47 Nie, nie piszesz ;) i to co pekfos podał. |
|
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++. |
|
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. |
|
1 2 « 3 » |