Programowanie obiektowe - Assembler, jak zacząć?

0

Witam,
dopiero zaczynam swoją przygodę z Assemblerem, więc na początku proszę o wyrozumiałość.

Muszę nauczyć się programowania obiektowego wlaśnie w Assemblerze ( obiekty, metody wirtualne... itp. ). Na początku zacząłem od Visual Studio i wstawek assemblerowych i napisałem metodę klasy - int dodaj(), dodająca atrybuty; Ale wydaje mi się, że idę w złym kierunku. Bo wg mnie nie utworzyłem w asemblerze metody ale jedynie jej ciało.

Moglibyście mi pomóc i naprowadzić na właściwe tory? Jakieś przydatne linki?

A może nie robić tego w VS tylko NASM?

Poniżej będę aktualizował swoje poczynania: może ułatwi to Wam, a w konsekwencji mi ogarnięcie tego :D
v0.1 : Ustawilem Assembly Project w Visual Studio, wiec NASM wg mnie juz mi nie potrzeby.
v0.2 : Znalazłem taki fajny translator na Assembly, co uważacie na ten temat? Na razie nie działa, walczyć z tym, good idea? https://godbolt.org/

using namespace std;
class cKlasa {
    public:
    int a;
    int b;
    int dodaj(){
        return(a+b);
    };
};
int main(){
    cKlasa obiekt;
    int result = obiekt.dodaj();
}

Powyższy kod translator przetłumaczył na: ( 5 linijek sam dodałem)

.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO, dwExitCode:DWORD

.code

_this$ = -4                                   ; size = 4
int cKlasa::dodaj(void) PROC                          ; cKlasa::dodaj, COMDAT
        push    ebp
        mov     ebp, esp
        push    ecx
        mov     DWORD PTR _this$[ebp], ecx
        mov     eax, DWORD PTR _this$[ebp]
        mov     eax, DWORD PTR [eax]
        mov     ecx, DWORD PTR _this$[ebp]
        add     eax, DWORD PTR [ecx+4]
        mov     esp, ebp
        pop     ebp
        ret     0
int cKlasa::dodaj(void) ENDP                          ; cKlasa::dodaj

_obiekt$ = -12                                      ; size = 8
_result$ = -4                                     ; size = 4
_main   PROC
        push    ebp
        mov     ebp, esp
        sub     esp, 12                             ; 0000000cH
        lea     ecx, DWORD PTR _obiekt$[ebp]
        call    int cKlasa::dodaj(void)             ; cKlasa::dodaj
        mov     DWORD PTR _result$[ebp], eax
        xor     eax, eax
        mov     esp, ebp
        pop     ebp
        ret     0
_main   ENDP

END _main

ERROR: 50 - MSB3721
9,21,30 linijka - A2008 blad skladniowy...

1

Właściwie to dlaczego chcesz programować obiektowo w Assemblerze?

0

Taki dostałem projekt na studiach, wiec tym razem nie dla przyjemności, ale z konieczności muszę jakoś coś takiego zrobić.

0

Zobacz w tym wątku przykład w C
Czy programowanie obiektowe jest takie samo w każdym języku programowania?

Nie uruchamiałem, ale wydaje się że prawidłowo autor przemyślał dziedziczenie i podobne koncepcje. To już "tylko" przenieść na assembler

1 użytkowników online, w tym zalogowanych: 0, gości: 1