Привет всем! Была у меня проблема с dll для Delphi, которая благополучно разрешилась под VC++, но никак не решается под gcc-mingw. Код (Text): ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;; заглушка для отбрасывания результата PUBLIC ?workfunc_noreturn@@YIXPAUHWND__@@@Z ; workfunc_noreturn EXTRN _workfunc:PROC EXTRN __RTC_CheckEsp:PROC EXTRN __RTC_Shutdown:PROC EXTRN __RTC_InitBase:PROC ; COMDAT rtc$TMZ rtc$TMZ SEGMENT __RTC_Shutdown.rtc$TMZ DD FLAT:__RTC_Shutdown rtc$TMZ ENDS ; COMDAT rtc$IMZ rtc$IMZ SEGMENT __RTC_InitBase.rtc$IMZ DD FLAT:__RTC_InitBase ; Function compile flags: /Odtp /RTCsu rtc$IMZ ENDS _TEXT SEGMENT _parent$ = -4 ; size = 4 ?workfunc_noreturn@@YIXPAUHWND__@@@Z PROC ; workfunc_noreturn ; _parent$ = ecx ; 10 : void __fastcall workfunc_noreturn(HWND parent) { push ebp mov ebp, esp push ecx mov DWORD PTR [ebp-4], -858993460 ; ccccccccH mov DWORD PTR _parent$[ebp], ecx ; 11 : workfunc(parent); mov eax, DWORD PTR _parent$[ebp] push eax call _workfunc add esp, 4 ; 12 : } add esp, 4 cmp ebp, esp call __RTC_CheckEsp mov esp, ebp pop ebp ret 0 _TEXT ENDS ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; proxy-функция для преобразования из Delphi-fastcall в MS-fastcall PUBLIC @proxyfunc@0 _TEXT SEGMENT @proxyfunc@0 PROC ; 18 : __asm { ; 19 : mov ecx,eax mov ecx, eax ; 20 : // вызываем рабочую функцию из asm-кода ; 21 : jmp workfunc_noreturn jmp ?workfunc_noreturn@@YIXPAUHWND__@@@Z ; wf @proxyfunc@0 ENDP _TEXT ENDS Я перевёл этот код в GAS: Код (Text): .globl _workfunc_noreturn _workfunc_noreturn: /// push ebp pushl %ebp /// mov ebp, esp movl %esp, %ebp /// push ecx pushl %ecx /// mov DWORD PTR [ebp-4], -858993460 ; ccccccccH movl $-858993460, -4(%ebp) /// mov DWORD PTR _parent$[ebp], ecx movl %ecx, -4(%ebp) /// mov eax, DWORD PTR _parent$[ebp] movl -4(%ebp), %eax /// push eax pushl %eax /// call _workfunc call _workfunc /// add esp, 4 addl $4, %esp /// add esp, 4 addl $4, %esp /// cmp ebp, esp cmpl %esp, %ebp /// call __RTC_CheckEsp // Skipped VC++ debug check /// mov esp, ebp movl %ebp, %esp /// pop ebp /// ret 0 popl %ebp ret //////////////////////////// ///PUBLIC @proxyfunc@0 .globl _proxyfunc _proxyfunc: /// mov ecx, eax movl %eax, %ecx /// jmp ?workfunc_noreturn@@YIXPAUHWND__@@@Z ; wf jmp workfunc_noreturn Но этот код не работает Помогите разобраться, а то глаза уже на лоб лезут.