Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - iksnagreb

Seiten: 1 [2]
21
Lowlevel-Coding / Re: strcmp
« am: 19. August 2012, 19:44 »
Zuerst prüfe ich, ob die Strings unterschiedlich lang sind, wenn ja, dann gebe ich den Längenunterschied zurück, wenn sie gleich lang sind vergleiche ich die einzelnen Buchstaben mit einander, wenn die Strings gleich sind sollte hier 0 zurückgegeben werden.

Bsp 1:
hi wird mit ho verglichen.
0 = 0 + 104 - 104 = 0
0 = 0 + 105 - 111 = -6
Die Strings sind ungleich.

Bsp 2:
hi wird mit hi verglichen.
0 = 0 + 104 - 104 = 0
0 = 0 + 105 - 105 = 0
Die Strings sind gleich.

Ich weiß jedoch nicht ob es mir mit dem Code gelungen ist das so umzusetzen und ob es überhaut sinnvoll ist es so zu lösen.
22
Lowlevel-Coding / strcmp
« am: 19. August 2012, 19:09 »
Hallo,
ich versuche eine strcmp Funktion zu schreiben:
int strcmp(const char * str_1 , const char * str_2)
{
if(strlen(str_1) > strlen(str_2))
{
return strlen(str_1) - strlen(str_2);
}
else if(strlen(str_1) < strlen(str_2))
{
return strlen(str_1) - strlen(str_2);
}
else
{
int ret = 0;
int i;

for( i = 0; str_1[i] != '\0' && str_2[i] != '\0'; i++ );
{
ret = ret + str_1[i] - str_2[i];
}
return ret;
}
}

Die Funktion funktioniert auch teilweise, sie hat aber Probleme damit zwei gleich lange Strings zu vergleichen. Ich glaube das Problem ist in der for-Schleife, ich weiß aber nicht genau was nicht stimmt.
23
Lowlevel-Coding / Re: Integer Eingabe mit Tastatur
« am: 12. August 2012, 12:40 »
Vielen Dank! So funktioniert es perfekt.
24
Lowlevel-Coding / Integer Eingabe mit Tastatur
« am: 11. August 2012, 22:02 »
Ich programmiere seit einigen Tagen einen Tastaturtreiber für meinen Kernel.
Jetzt versuche ich eine Funktion zur Eingabe von Integern zu schreiben:
int getn()
{
int ziffer_1 = getchar() - 48;

int ziffer_2 = getchar() - 48;

int ziffer_3 = getchar() - 48;

int zahl;

if(ziffer_1 < 0 || ziffer_1 > 9 || ziffer_2 < 0 || ziffer_2 > 9 || ziffer_3 < 0 || ziffer_3 > 9)
{
zahl = -1;
}
else
{
zahl = ziffer_1 * 100 + ziffer_2 * 10 + ziffer_3 * 1;
}

return zahl;
}

Diese Funktion funktioniert ganz gut, doch wie man sieht wird man bei der Eingabe dazu "gezwungen" Zahlen mit drei Ziffern einzugeben.
Mir fällt keine andere Lösung ein, als für jede Ziffer eine Eigene Variable anzulegen, die würde den Code jedoch sehr lang und unschön machen.
Kennt jemand hier eine schönere Lösung für mein Problem?
25
Offtopic / Re: GCC: Komische Anmerkung
« am: 25. July 2012, 20:49 »
Die Anmerkung kommt nicht mehr, es hat auch so Funktioniert, ist nur irgendwie komisch, dass sich der Compiler eine Anmerkung ausgiebt, wenn der passende Typ gegeben ist.
26
Offtopic / GCC: Komische Anmerkung
« am: 25. July 2012, 20:16 »
Heute hat mir der Compiler folgende Anmerkung ausgegeben:
Anmerkung: »struct cpu_state *« erwartet, aber Argument hat Typ »struct cpu_state *«
Irgend wie komische, aber was soll das bedeuten?
27
Lowlevel-Coding / Re: uint64_t/uint16_t Probelm
« am: 24. July 2012, 09:30 »
Vielen Dank für die schnelle Antwort.

Ist es den möglich  mit long long und short weiter zu machen, oder gibt es da irgend welche Probleme?
28
Lowlevel-Coding / uint64_t/uint16_t Probelm
« am: 24. July 2012, 09:19 »
Ich habe die GDT wie im Wiki eingerichtet:

http://www.lowlevel.eu/wiki/Global_Descriptor_Table

Es funktioniert bei mir jedoch nur, wenn ich für uint64_t den long long Datentyp verwende und für uint16_t den short Datentyp.

Der Compiler gibt mir sonst aus:
gdt.h:14:1: Fehler: unbekannter Typname: »uint64_t«
gdt.h:39:6: Fehler: unbekannter Typname: »uint16_t«

Warum ist das so?
Seiten: 1 [2]

Einloggen