Hi Leute,
erschlagt mich nicht :D Aber ich bin in C nicht so ganz konform. Aber
ich benötige die Daten dieser Adresse wirklich. Jedoch habe ich nicht so
wirklich die Ahnung wie ich daran komme, erstmal zu
grundverständnissfrage:
ich habe folgenden Zeiger auf eine Adresse:
1
fCurrDataA=newAddress(0x00c15b55,7344);
Die erste Zahl (hex) ist die Adresse, die zweite Zahl (dec) ist der
offset.
Nun kommt das Problem was ich nicht zu lösen weis:
"You need to read 4 byte integer to this Address (1st digit)" <- heißt
das das der erste Wert mir eine Integer von dieser Adresse zurückgibt?
"To this number to add a decimal number (2 number form the address)." <-
soll ich nun die hinteren zahlen dazuaddieren oder übergibt mir die
Speicheradresse zwei Werte welche ich addieren muß?
Das Resultat dieser Rechnung jedenfalls gibt mir die Speicherposition
zurück an welchen ich meine Daten auslesen kann.
> erschlagt mich nicht :D Aber ich bin in C nicht so ganz konform.
Meinst du "firm"?
> ich habe folgenden Zeiger auf eine Adresse:>> fCurrDataA = new Address(0x00c15b55, 7344);
Das sieht erstmal nicht nach C aus, denn da gibt es keinen Operator
new, Könnte eher C++ sein, und mit "Adresse" ist anscheinend eine
Instanz einer Klasse namens "Address" gemeint. Nur läßt sich das in
keiner Weise mit dem in Zusammenhang bringen, was du im Folgenden
schreibst.
> Die erste Zahl (hex) ist die Adresse, die zweite Zahl (dec) ist der> offset.
Und was passiert dann damit?
> "You need to read 4 byte integer to this Address (1st digit)" <- heißt> das das der erste Wert mir eine Integer von dieser Adresse zurückgibt?
Wie "zurückgibt"? Oben übergibst du doch den Wert.
> "To this number to add a decimal number (2 number form the address)." <-> soll ich nun die hinteren zahlen dazuaddieren oder übergibt mir die> Speicheradresse zwei Werte welche ich addieren muß?
Hmm, der Satz ergibt erstmal gar keinen Sinn und ist auch in ziemlich
holprigem Englisch geschrieben, wie der erste. Wo kommt diese Doku denn
her?
> Das Resultat dieser Rechnung jedenfalls gibt mir die Speicherposition> zurück an welchen ich meine Daten auslesen kann.
Welche Rechnung?
Rolf Magnus schrieb:
> Wo kommt diese Doku denn>> her?
Von einem Russen via EMail :D
Ich muß mal schauen wie ich das geregelt bekomme... Zumindest steht an
dieser Position scheinbar die Adresse für meine Adresse zu dem Speicher.
In C hast du eine variable, deren Typ Pointer ist, und setzt den Pointer
auf die Adresse, von der du lesen willst. Typischerweise addiert man pro
Lesen die Grösse des zu lesenden Datentyps hinzu und liest solange, bis
man fertig ist.
Was du beschrieben hast, ist objektorientiert und ohne weitere Angaben
unverständlich. Am Einfachsten wäre es, wenn du schreibst, was du machen
willst und das Codesnippet einfügst.
Gruss
Robert
Also ich möchte aus dem Ram Adressen Daten auslesen jedoch:
"And and so look:
1st digit - the address (hex a number system),
2nd - offset (decimal).
It not simple addresses, is pointers.
To read on them so:
You need to read 4 byte integer to the Address (1st digit).
To this number to add a decimal number (2 number from the address).
And the received number is an address where that is necessary for you
"
Und das brauche ich, den Code oben hat er mir als Snipet mitgeschickt.
Der Russe schreibt wohl, dass die erste Zahl die Adresse mit 4 byte, und
die zweite Zahl der offset ist.
Vermurkste x86 Architektur halt:
Mehrere dieser Adressen können den selben Speicherplatz beschreiben.
Soweit ich mich erinnere, wird der offset noch mit der Blockgröße
multipliziert, bevor er zur Adresse addiert wird.
Was genau war jetzt deine Frage? Was der Russe dir geschrieben hat?
Das war ziemlich genau:
> Die erste Zahl (hex) ist die Adresse, die zweite Zahl (dec) ist der> offset.
Was ist der Sinn der Übung?
Worauf soll das laufen und was soll es bewirken, was der des Englischen
eher nicht mächtige russische Zeitgenosse da beschreibt?
http://de.wikipedia.org/wiki/X86-Prozessor
unter Real Mode:
Segmentadresse x 16 + Offset ergibt die absolute Adresse.
Aber wenn Du nicht tief im Betriebssystem drinnen bist, dann wird das
Betriebssystem nicht ohne weiteres einen Zugriff auf diese Adresse
erlauben.
Rufus t. Firefly schrieb:
> Was ist der Sinn der Übung?>> Worauf soll das laufen und was soll es bewirken, was der des Englischen>> eher nicht mächtige russische Zeitgenosse da beschreibt?
Na ich denke mein englisch ist auch nicht viel besser :D
Der Sinn der ganzen Geschichte:
An dieser Postion sollen, entweder die Werte oder die Position der Werte
liegen, welche aus einem Spiel die Geschwindigkeit (m/s) ermitteln.
Diese Werte möchte ich via RS232 auf einem externen Display anzeigen.
Quasi eine externe Geschwindigkeitsanzeige...
Du willst also auf Daten zugreifen, die im Adressraum eines Programmes
liegen. Schön und gut, und unter welchem Betriebssystem hast Du das
vor?
Unter DOS mag man das so machen können, aber unter den ernstgemeinten
Windows-Versionen und genauso auch unter Linux und artverwandtem kann
ein Programm nicht ohne weiteres auf den Speicher zugreifen, den ein
anderes Programm verwendet.
Ausreichende Berechtigungen vorausgesetzt (Administrator, Debug-Privileg
etc.) ist es möglich, mit betriebssystemspezifischen Funktionen auf
Speicherbereiche anderer Prozesse zuzugreifen; mit simplen
Pointeroperationen aber geht das nicht.