inhalt eines zeigers bekommen
-
hi ihr lieben,
meine funktion bekommt einen zeiger auf ein integer als parameter, wenn ich den parameter anspreche bekomme ich ja nur die adresse auf die er zeigt, doch wie komm ich den eigentlichen inhalt (den integer) heran?
bspcode:
void vadd (int *v_a, int *v_b, int *res, int len) { __asm { // hier will ich v_a und v_b multiplizieren; // dazu brauche ich aber die werte von v_a und v_b ... mov eax, v_a; imul v_b; mov res, eax; ... // tuts aber nicht } };
kann mir einer sagen, wie ich an die ints herankomme?
thnx
Simon
-
mov eax, [ebx]
z.B. lädt in eax das, wo ebx draufzeigt, also in Pseudo-C wäre das
eax = *ebx;
Ob man nun zu deinem Beispiel passend auch
mov eax, [v_a]; imul [v_b]; mov res, eax;
machen kann, musst du ausprobieren ob der Compiler das auch übersetzt...gehen sollte es
-
das klappt bei nir ned. es geht nur wenn ich:
mov ebx, v_a;
mov eax [ebx];mache. (und das auch nur genau einmal) danach steht nur noch müll in den variablen.
achso was ich unterschlagen hab v_a zeigt nicht auf einen integer sondern auf einen array von integen;
*schaut verwirrt*
Simon
-
So funktioniert es:
void vadd(int *v_a, int *v_b, int *res, int len) { __asm { mov eax, v_a mov eax, [eax] mov ebx, v_b mov ebx, [ebx] imul ebx mov ebx, res mov [ebx], eax } }
lg, phreaking
-
ich weis net wo du her kommst, aber ich danke deinen eltern, dass es dich gibt!!!
so viel hilfe kann man gar ned wieder gut machen! wenn du mal hilfe brauchst, schau mal auf meine seite, da is meine icq!
Danke für die Hilfe!
*knuddel und wuddel den phreaking*
Simon