Wie funktioniert iostream
-
tuxer schrieb:
Müsste die nicht in Assembler geschrieben sein?
Nein, daß muß nicht der Fall sein. Es gibt dafür zwei Möglichkeiten, erstens man verwendet die C API des OS, zweitens man kann direkt Kernelfunktionen nutzen was letztlich schneller ist. Die gcc Implementierung kannst Du Dir im Source anschauen, bei vielen anderen Compilern wird kein Sourcecode mitgeliefert, und somit läßt sich die Frage wohl nur über eine Anfrage beim Hersteller beantworten.
-
Danke
berniebutt schrieb:
Einfach benutzen!
wäre schwierig ohne :p
-
printf() ?
-
T0bi schrieb:
printf() ?
hoffentlich nicht.
cheers, Swordfish
-
T0bi schrieb:
printf() ?
...und wie funktioniert nun printf()?... it's magic
MfG SideWinder
-
Swordfish schrieb:
T0bi schrieb:
printf() ?
hoffentlich nicht.
cheers, Swordfish
Wieso nicht?
Prost, Pottwal.
-
früher ging das mit dem DOS-Interrupt ( __asm int 0x21 ).
Man lädt die CPU-Register mit den Daten für die Funktion, die man haben will und DOS erledigt den Rest.
Bin da aber nicht so fit.[ der folgende Code ist vermutlich falsch/unsinnig ]
mov ah, 0x06 // 0x06 heißt man will Konsolen-Output mov dl, 'A' // 'A' soll ausgegeben werden int 0x21 // DOS-Interrupt
-
Pottwal schrieb:
Swordfish schrieb:
T0bi schrieb:
printf() ?
hoffentlich nicht.
cheers, Swordfish
Wieso nicht?
Prost, Pottwal.
Wahrscheinlich, weil
printf()
C und nicht C++ ist.iostream
besitzt Vorteile bezüglich der Sicherheit und hat auch moderne Funktionen.
-
SideWinder schrieb:
T0bi schrieb:
printf() ?
...und wie funktioniert nun printf()?... it's magic
MfG SideWinder
Das wird wiederum cout benutzen!!
__deprecated schrieb:
früher ging das mit dem DOS-Interrupt ( __asm int 0x21 ).
Man lädt die CPU-Register mit den Daten für die Funktion, die man haben will und DOS erledigt den Rest.
Bin da aber nicht so fit.[ der folgende Code ist vermutlich falsch/unsinnig ]
mov ah, 0x06 // 0x06 heißt man will Konsolen-Output mov dl, 'A' // 'A' soll ausgegeben werden int 0x21 // DOS-Interrupt
Ja, so wird das letztendlich hinter der ganzen Fassade gemacht! Und es wird tatsächlich so gemacht.
Ich frage mich nur, wie das ganze gehandhabt wird wenn man mehrere Konsolen hat?! Da muss es ja hardwaremäßig wieder ne kleine Rezeptur geben.
-
Thomy schrieb:
Ich frage mich nur, wie das ganze gehandhabt wird wenn man mehrere Konsolen hat?! Da muss es ja hardwaremäßig wieder ne kleine Rezeptur geben.
Was unterhalb der I/O-Streams geschieht ist schlicht sache des Betriebssystems. Die Verschiedenen Implementierungen der STL rufen vom Betriebssystem bereitgestellte Funktionen auf. Unter Windows ist das die Win32 API bzw. die NT API, unter Linux Syscalls. In letzter Konsequenz wird es unter ziemlich allen Betriebssystemen wahrscheinlich der Graphikkartentreiber sein, der die Pixel auf den Schirm bringt.
Wie dem auch sei, C++ kümmert das nicht.
cheers, Swordfish
-
die frage, die mich immer schon beschäftigt hat: wo zum teufel schreibt cout hin, wenn man mit C++ einen toaster programmiert?
-
queer_boy schrieb:
die frage, die mich immer schon beschäftigt hat: wo zum teufel schreibt cout hin, wenn man mit C++ einen toaster programmiert?
Na. Auf den Toast. Ist doch klar.
EDIT:
http://www.theredskull.com/pics/toast.jpg
Hier lief das Programm:
#include <iostream> int toast = 0; int main () { std::cout << "TOAST"; return toast; }
-
ich glaube queer_boy meint wie man elektrische Schaltungen Programmiert