Ïðîãðàììèðîâàíèå íà Àññåìáëåðå


         

Îñîáåííîñòè èñïîëüçîâàíèÿ àññåìáëåðíûõ ôóíêöèé â êà÷åñòâå ôóíêöèé – ÷ëåíîâ êëàññîâ


Ïóñòü çàäàí êëàññ:

class STRING{

    char *s;

    public:

    STRING (char * c){

          s = new char[strlen(c)+1];

          strcpy (s, c);

    }

    ~STRING (){

   delete []s;

      }

    public:

    int len ()

};

Ïóñòü ôóíêöèþ îïðåäåëåíèÿ äëèíû ñòðîêè íåîáõîäèìî îïðåäåëèòü íà àññåìáëåðå. Îïðåäåëèì åå ñíà÷àëà íà Ñ. Ïîëó÷èì ôàéë:

#pragma inline

#include "mystr.h"

int STRING::len(){

  int i;

   for (i=0; s[i]; i++);

   return i;

}

Çäåñü äèðåêòèâà #pragma inline çàäàíà ñ öåëüþ ôîðìèðîâàíèÿ àññåìáëåðíîãî êîäà.  ðåçóëüòàòå òðàíñëÿöèè ïîëó÷èì ôàéë íà àññåìáëåðå, îñíîâíà ÷àñòü êîòîðîãî ïðèâåäåíà íèæå:

            .386p

            ifdef ??version

            if    ??version GT 500H

            .mmx

            endif

            endif

            model flat

            ifndef   ??version

            ?debug            macro

            endm

            endif

            ?debug            S "E:\users\lena\INSTITUT\ASM\USKOR\cl.cpp"

            ?debug            T "E:\users\lena\INSTITUT\ASM\USKOR\cl.cpp"

_TEXT segment dword public use32 'CODE'

_TEXT ends

_DATA            segment dword public use32 'DATA'

_DATA            ends

_BSS    segment dword public use32 'BSS'

_BSS    ends

$$BSYMS        segment byte public use32 'DEBSYM'

$$BSYMS        ends

$$BTYPES      segment byte public use32 'DEBTYP'

$$BTYPES      ends

$$BNAMES     segment byte public use32 'DEBNAM'

$$BNAMES     ends

$$BROWSE    segment byte public use32 'DEBSYM'

$$BROWSE    ends

$$BROWFILE            segment byte public use32 'DEBSYM'

$$BROWFILE            ends

DGROUP       group   _BSS,_DATA

_TEXT segment dword public use32 'CODE'

@STRING@len$qv    segment virtual

@@STRING@len$qv proc     near

?live16385@0:

            ?debug L 4

            push      ebp

            mov       ebp,esp

            push      ecx

            ?debug L 6

@1:

            xor       eax,eax

            mov       dword ptr [ebp-4],eax



Ñîäåðæàíèå  Íàçàä  Âïåðåä