#include "loadlib.as" ;================================================================================= ; ; 機械語使ってqsortを使ってみる ; ;================================================================================= ;void qsort (const void* pBase, size_t cntObjects, size_t sizeObject, ; int(*pCompar)(const void *, const void *)); #define SIZE_OF_INT 4 ll_libload h_MSVCRT,"msvcrt.dll" if stat!0 : dialog "msvcrt.dllがロードできません" : end ll_getproc F_qsort,"qsort",h_MSVCRT if stat!0 : dialog "関数qsortが見つかりません" : goto _libfree alloc buf,1024 sdim s,1024 ;機械語1 s={" 8b442404 ;mov eax,[esp+4] 8b00 ;mov eax,[eax] 8b4c2408 ;mov ecx,[esp+8] 8b09 ;mov ecx,[ecx] 3bc1 ;cmp eax,ecx 7f05 ;jg __jmp_p1 7c07 ;jl __jmp_p2 ;eax=ecx 33c0 ;xor eax,eax c3 ;ret ;eax>ecx(__jmp_p1:) 33c0 ;xor eax,eax 40 ;inc eax c3 ;ret ;eax