📄 win32-md.asm
字号:
TITLE WIN32_ASM .486P.model FLAT_TEXT SEGMENTPUBLIC _i386_do_fixup_trampolineEXTRN _soft_fixup_trampoline:NEAR_i386_do_fixup_trampoline PROC NEAR call _soft_fixup_trampoline pop ecx jmp eax_i386_do_fixup_trampoline ENDPPUBLIC __currentFrame__currentFrame PROC NEAR mov eax,ebp ret__currentFrame ENDPPUBLIC __callException__callException PROC NEAR pop eax ; Throw away return value pop ebp ; Get new frame pop edx ; Get jump address pop eax ; Get return argument jmp edx ; Jump__callException ENDPPUBLIC __sysdepCallMethod__sysdepCallMethod PROC NEAR push edi push ebp mov ebp,esp mov edi,dword ptr [ebp+12] mov eax,dword ptr [edi+12] ; nrargs mov edx,dword ptr [edi+4] ; args lea ecx,dword ptr [edi+22] ; callsizel1: cmp eax,0 je l3 dec eax cmp byte ptr[ecx+eax],0 je l1 cmp byte ptr[ecx+eax],1 je l2 push dword ptr [edx+eax*8+4]l2: push dword ptr [edx+eax*8] jmp l1l3: call dword ptr [edi] ; function mov edi, dword ptr [ebp+12] mov edx, dword ptr [edi+8] ; ret mov cl,[edi+21] ; rettype cmp cl,46h jne l4 fstp dword ptr [edx] jmp l6l4: cmp cl,44h jne l5 fstp qword ptr [edx] jmp l6l5: mov dword ptr [edx],eax cmp cl,4Ah jne l6 mov dword ptr [4+edx],edxl6: leave pop edi ret__sysdepCallMethod ENDPPUBLIC __compareAndExchange__compareAndExchange PROC NEAR mov ecx,dword ptr [esp+4] ; addr mov eax,dword ptr [esp+8] ; old mov edx,dword ptr [esp+12] ; new lock cmpxchg dword ptr [ecx],edx je l7 mov eax,0 retl7: mov eax,1 ret__compareAndExchange ENDP_TEXT ENDSEND
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -