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


Anmelden zum Antworten