Windows - zeugs, fragen, nichts bestimmtes

05/12/2013 16:36 mcuncool#1
Windows Kernel ist in C geschrieben
C library benutzt die Funktionen von Win32 Api
was ist C ohne die library? wie kann man daraus einen Kernel machen ^^ datenstrukturen etc?
wie ist zB HeapCreate(); implementiert?


und

Windows verwaltet den Speicher selbst(ob windows die eigenen api funktionen dafür nutzt?), warum(und wann, bitte für dumme/java programmierer) würde ich malloc bzw HeapAlloc(); nutzen? Gibt es irgendwo in z.B. Battlefield 3 source code wirklich eine Zeile wie void *malloc();(aber sinnvoller) bzw. sein C++ Äquivalent?
05/12/2013 18:47 マルコ#2
C ohne die library ist immer noch C, weil C der Name der Sprache ist ;)
Wie kannst du nen Kernel machen? Nunja, Bootloader in Assembler und dann würd ich an deiner stelle mal den GNU Compiler anschaun. BTW. Kernel o.ä. lassen sich auch gut mit Pascal erstellen.
Datenstrukturen? Nunja, das obliegt dir, wie du du Daten in ne (binäre) Datei rein haust. Im Allfgemeinen benutzt man nen Streamwriter dafür. Dann kannste das Bitweise manipulieren.
malloc benutzt du immer dann, wenn du Speicher reservieren musst. Also z.B. für Arrays oder Objekte. C++ benutzt hierfür "new". Ich gehe davon aus, dass BF3 in C++ geschrieben wurde, also wirst du im Game Code sicherlich nur new finden. Wie das aber bei den genutzten Engines aussieht.... wer weiß.
05/13/2013 00:43 mcuncool#3
Kernel muss den Speicher auch verwalten, und ganz unten stehen ihm keine Win32 API funktionen zur Verfügung(nur zB C(ohne library, yeah klammer inception!) oder Pascal^^).

meh:
hardware
CPU instruction > memory controller > RAM
software
RAM > software memory manager(kernel düfte hier sein) > virtual memory
virtual memory > unknown algos > Win32 memory management



Ich überfliege gerad [Only registered and activated users can see links. Click Here To Register...] und das vergewaltigt mein mit Nebensächlichkeiten unbelastetes java hirn :D

werde deinen Rat befolgen und einen C compiler anschauen, keine Ahnung was ich da zu erwarten hab :D

ja ich weiß, die Fragen sind mehr dürftig formuliert, habt Nachsicht. irrtum vorbehalten
05/13/2013 00:49 マルコ#4
Nein, aber malloc oder new gehören zur Grundausrüstung - nicht zu irgend einem API.
Und wenn du eine eigene malloc Funktion schreiben willst, dann wirst du Assembler brauchen. Damit kommst du gaaaanz arg tief runter.
Aber wer braucht sowas, wenn es sowas schon gibt. Wie gesagt, heut zutage ist sehr vieles bereits vorhanden. Und so C Standards sollte man schon nutzen. Ansonsten wird man mit Assembler meschugge. Nur für komplett neue Sachen, die auf der Hardware aufbauen, würde ich noch zu Assembler greifen.

Aber wozu arbeitest du dich in die Hintergründe der WinAPI ein? Willst du selbst ein OS basteln oder was?^^
05/13/2013 01:01 mcuncool#5
neugier alter xD
hab so viel mit java und python gecodet. ich will wissen was unter der haube passiert. außerdem bin ich neidisch, weil leute wie ich mit einer (edit:falsches wort gewählt) höheren programmiersprache auf einer zu hohen abstraktionsebene arbeiten um noch etwas von dem system mitzubekommen. Um es zu manipulieren HAR-HAR-Hust-hust* Das führt dazu, dass die kaste der Systemarchitekten von Codeaffen weiter entfernt wird.

ich hab auch darüber nachgedacht, leute die eigene, bereits vorhandenen Funktionen schreiben, benutzen die vorhandenen Funktionen in ihren Funktionen xD!