-
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/