Keine Wertzuweisung

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Keine Wertzuweisung

Beitrag von cloidnerux » Do Sep 24, 2009 4:22 pm

Ich habe einen pointer auf einen bestimmten Speicherbereich, dieser ist nicht belegt.
Jezt versuche ich dem Zeil des Pointers einen Wert zuweisen, doch dies Funktioniert nicht.
Beim Auslesen des Zeil erhalte ich 0, obwohl etwas anderes hereingeschrieben wurde.

Code: Alles auswählen

	for(i = 0; i < 1024; i++)
	{
		tempPageTable[i] = (i * 4096) | 3;
		ASSERT(tempPageTable[i] != 0);              //Gibt Fehlermeldung bei NICHT erfüllen der Bedigung aus.
	}
Der Code ist aus Aeris, desshalb bin ich mir nicht so sicher, was schief gelaufen sein kann.
Ich nutze keine Optimierung.
Danke für Hilfe.
Redundanz macht wiederholen unnötig.
quod erat expectandum

AnGaiNoR
Beiträge: 212
Registriert: Sa Jul 19, 2008 7:07 pm
Wohnort: Dresden

Re: Keine Wertzuweisung

Beitrag von AnGaiNoR » Do Sep 24, 2009 5:19 pm

Wenn ASSERT also eine Fehlermeldung ausgibt, wenn die Bedingung nicht erfüllt ist, dann scheint die Bedingung nicht erfüllt zu sein, eigentlich logisch :P
Die Werte in deinem wurden also zugewiesen, sind aber augenscheinlich nicht alle 0.
Für i = 2:
2048 | 3 = 2053 != 0

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Keine Wertzuweisung

Beitrag von cloidnerux » Do Sep 24, 2009 5:24 pm

Die Werte in deinem wurden also zugewiesen, sind aber augenscheinlich nicht alle 0.
Das weiß ich ja, aber ich suche nach der Lösung zu meinem Problem.
Ich habe ja auch extra den Wert ausgeben lassen, den tempPageTable und da war es auch immer 0.
Also ist irgendwo der Wurm drinne.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Keine Wertzuweisung

Beitrag von cloidnerux » Do Sep 24, 2009 8:32 pm

Ok, fehler gefunden, ich hatte einen Multiplikationsfehler beim Allokieren des Speichers, wodurch falsche Addressen gemappt wurden.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Keine Wertzuweisung

Beitrag von Xin » Fr Sep 25, 2009 11:17 am

cloidnerux hat geschrieben:Ok, fehler gefunden, ich hatte einen Multiplikationsfehler beim Allokieren des Speichers, wodurch falsche Addressen gemappt wurden.
Öhm... ich sehe hier grade keinen Fehler... nur der Vollständigkeit halber... was ging warum schief?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Keine Wertzuweisung

Beitrag von Dirty Oerti » Fr Sep 25, 2009 12:58 pm

Soweit ich es mitbekommen habe:

Der Fehler lag nicht im obrigen Code, sondern wurde durch eine falsche Speicheralokierung (an anderer Stelle im Aeris-Betriebssystem) ausgelöst. Der Speicher wurde dadurch an eine andere (phys) Stelle gemappt, als vorgesehen. Dadurch konnten die gespeicherten Wert auch nicht von der vorgesehenen (phys) Adresse eingelesen werden.
Da ein Emulator wie Qemu den Speicher mit 0 initialisiert waren alle Werte == 0.

(Ich schreibe das, damit jemand, der nicht weiß, das cloidnerux an einem eigenen Kernel programmiert und der kein Vorwissen über so tiefgehende Computerangelegenheiten hat auch versteht, was denn nun los ist. Kurz: Der Vollständigkeit halber)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Antworten