eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming[asm] cos nie dziala
Ilość wypowiedzi w tym wątku: 3

  • 1. Data: 2012-01-29 09:51:46
    Temat: [asm] cos nie dziala
    Od: " " <f...@W...gazeta.pl>

    jakos nie udaje mi sie dostac do przekazywanego
    przez wywolanie funkcji paramatru

    jak podgladam sam kod generowany przez borlanda55
    to wyglada ok

    wywolanie int ret = asmRoutine(77,66,55);


    mov eax,offset _asmRoutineData
    push 55
    push 66
    push 77
    call eax
    add esp,12

    sama procedura

    _asmRoutineData label byte
    db 200 //enter
    db 0
    db 0
    db 0
    db 139 // mov eax, dword [ebp+8H] ; 8B. 45, 08
    db 69
    db 8
    db 201 //leave
    db 195 //ret

    enter chyba zrzuca na stos inta samo call jednego inta
    i mw [ebp+8 powinno wczytac pierwszy argument

    jednak cos tu nie dziala sa zle wartosci np 0,
    chyba ze cos pochrzanilem z tym kodem maszynowym,
    nie wiem co to za kropka przy 8B.



    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 2. Data: 2012-01-29 15:29:00
    Temat: Re: [asm] cos nie dziala
    Od: Michoo <m...@v...pl>

    W dniu 29.01.2012 10:51, f...@W...gazeta.pl pisze:
    > jakos nie udaje mi sie dostac do przekazywanego
    > przez wywolanie funkcji paramatru
    >
    A jakie calling convention używasz? Ten zabytek chyba miał już domyślny
    fastcall.

    > chyba ze cos pochrzanilem z tym kodem maszynowym,
    Hint: naucz się pisać w assemblerze. potem bierz za kod maszynowy.

    > nie wiem co to za kropka przy 8B.
    ???

    --
    Pozdrawiam
    Michoo


  • 3. Data: 2012-01-29 19:17:11
    Temat: Re: [asm] cos nie dziala
    Od: " " <f...@N...gazeta.pl>

    <f...@W...gazeta.pl> napisał(a):

    > jakos nie udaje mi sie dostac do przekazywanego
    > przez wywolanie funkcji paramatru
    >
    > jak podgladam sam kod generowany przez borlanda55
    > to wyglada ok
    >
    > wywolanie int ret = asmRoutine(77,66,55);
    >
    >
    > mov eax,offset _asmRoutineData
    > push 55
    > push 66
    > push 77
    > call eax
    > add esp,12
    >
    > sama procedura
    >
    > _asmRoutineData label byte
    > db 200 //enter
    > db 0
    > db 0
    > db 0
    > db 139 // mov eax, dword [ebp+8H] ; 8B. 45, 08
    > db 69
    > db 8
    > db 201 //leave
    > db 195 //ret
    >
    > enter chyba zrzuca na stos inta samo call jednego inta
    > i mw [ebp+8 powinno wczytac pierwszy argument
    >
    > jednak cos tu nie dziala sa zle wartosci np 0,
    > chyba ze cos pochrzanilem z tym kodem maszynowym,
    > nie wiem co to za kropka przy 8B.
    >
    >

    found it'

    (uff - jestem zadowolony bo teraz dziala 'w cholere' dobrze)

    nie zauwazylem ze moj kompile bat

    c:\borland\bcc55\bin\bcc32 -tW -P -pr -k -ff -5 -Oi -RT- -x- -w- -e"app"
    main.c

    (niektore z tych przelacznikow chyba nie specjalnie dzialaja
    ale nie wiem)

    ma przlecznik -pr (use fastcall) - ten drugi ktory zrzucal
    procz kompilacji listing w asmie nie mial i generowal dobrze
    a nie zauwazylem ze zawsze odpalam do testu z tego normalnego
    (ktory po cichu generowal fastcalle - fastcall jak mniemam
    nie przesuwa stosu z powrotem (przynajmniej o jednego inta)
    wiec bylo heap corruption - and goes bum

    teraz dziala i to swietnie dziala i przkazywanie i fpu i
    nawet sse bez problemu - swietne wiesci bo w tej formie pisze
    sie swietnie i pewnie trzasne i potestuje pare procedur
    maszynowych

    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: