Pisanie OS w C++ (pytam poważnie)

2011-10-15 17:56
0

Tak jak w temacie, chcę się dowiedzieć czy da się napisać system w czystym cpp bez asm. Na necie nic nie znalazłem, bo są tylko tysiące tematów założonych przez dzieci "jak napisać swój system"... A jeżeli bez asm się nie da, to jest wiele tutoriali jak napisać w asm, a co potem? Przecież nie da się całego systemu napisać w samym asm. Z góry dziękuję za odpowiedź. Jeżeli by komuś się chciało rozpisać, a wie nieco o tym, prosiłbym o wytłumaczenie takiego procesu tworzenia OS'a - nie jakiegoś zaawansowanego, ale takiego ala mini DOS, np. miałby wbudowany program - kalkulator.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał

Pozostało 580 znaków

2011-10-15 17:57
Rev
0

Całego systemu w C/C++ nie napiszesz, w ASM też nie (tj. możesz, ale nie chcesz ;)), ale kto mówi, że nie możesz zrobić podstawowej części w ASM, a później używać wyłącznie C++ (z nielicznymi wstawkami tego pierwszego)?


edytowany 1x, ostatnio: Rev, 2011-10-15 17:59
Widziałem OSy pisane w całości w asmie więc da się. - lukasz1235 2011-10-15 17:59

Pozostało 580 znaków

2011-10-15 17:57
0

Bez żadnych wstawek asma byłoby ciężko.

ha, w tej samej sekundzie wysłane posty :D - Rev 2011-10-15 17:58
Ale ty minimalnie szybszy :p - lukasz1235 2011-10-15 18:00
A w czym byłby problem? Pytam z ciekawości. Rozumiem, że asm jest bardziej dokładny i jest większa kontrola no ale c++ robi to samo krócej zapisując czy są jeszcze do tego jakieś odstępki? - nerf 2011-10-15 18:01
W c++ nie ma bezpośredniego dostępu np. do portów czy instrukcji lidt, lgdt - lukasz1235 2011-10-15 18:03

Pozostało 580 znaków

2011-10-15 18:01
0

No dobra czyli początek asm, a jak zacząć potem z cpp?


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał

Pozostało 580 znaków

2011-10-15 18:02
0

Zależy jak to rozwiążesz. Chcesz pisać własny bootloader czy użyć gotowego?

Pozostało 580 znaków

2011-10-15 18:06
0

Raczej gotowego ;p


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał

Pozostało 580 znaków

2011-10-15 18:10
0

Jeżeli chcesz użyć GRUBa to linkujesz ten krótki kod asma:

[BITS 32]
[SECTION .text]
mboot:
   dd 0x1BADB002            ; Header magic
   dd 0x00001               ; Flags (PAGE_ALIGN)
   dd -(0x1BADB002+0x00001) ; Checksum

z kodem napisanym w C++ i to w zasadzie tyle.

Więcej info tutaj: http://wiki.osdev.org/C%2B%2B_Bare_Bones

edytowany 1x, ostatnio: lukasz1235, 2011-10-15 18:11

Pozostało 580 znaków

2011-10-15 18:12
0

I wtedy co, kod w cpp wykonuje się normalnie?


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał

Pozostało 580 znaków

2011-10-15 18:14
0

Tak, tylko musisz ustawić entry point na kod w C++ i wywołać statyczne konstruktory (jeżeli takie w kodzie masz)

Pozostało 580 znaków

2011-10-15 18:18
0

K, dzięki za odpowiedź.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0