Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Assembler » VC spinnt bei Inlineassembler?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.07.2005, 19:13 Uhr
Oliver
S2-Pixelgeneral


Hi,

ich benutze Inline Assembler in VC8 (Beta), um eine Surface zu "verdunkeln", damit das ein bisschen schneller geht, gleich noch mit MMX.
Allerdings klappt das nicht so ganz, wenn ich mit dem Debugger in die erste Zeile vom _asm Block springe und die ausführen lasse, steht in eax 4 ?? Das Lustige ist nun, wenn man sich das Disassembly anschaut, übersetzt er die Zeile

mov eax, width

in

mov eax, 4



width und height sind Member der Klasse Surface und vom Typ unsigned int.

Nun die Frage: Warum?


C++:
void Surface::BlendDark (const unsigned long color)
{
    unsigned char * data;
    unsigned long pitch;
    this->Lock(&data,pitch);

    pitch -= width * 4;

    _asm
    {
        mov eax, width
        shr eax, 1
        mov ebx, data
        mov ecx, height
        movd mm0, color
        psllq mm0, 32
        movd mm0, color

        LoopY:

        mov eax, width
        shr eax, 1

        LoopX:

        movq mm1, dword ptr[ebx]
        psubusb mm1, mm0
        movq dword ptr[ebx], mm1

        dec eax
        jnz LoopX

        add ebx, pitch

        dec ecx
        jnz LoopY

        emms
    }

    this->Unlock();
}



--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.07.2005, 19:50 Uhr
Oliver
S2-Pixelgeneral


Achja, was mir ncoh aufgefallen ist:

Er ersetzt anscheinend immer durch das Offset, also vor width kommt noch ein pointer (4 Byte groß), nach width kommt height (dort wird's durch 8 ersetzt)
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.07.2005, 20:11 Uhr
Oliver
S2-Pixelgeneral


Hat sich erledigt, musste einfach this draufaddieren.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Assembler ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: