関数一覧3

色々試してみた。

#module m0 x, y, z
#modinit int
#modterm
#defcfunc func1 str, int, local, double, var, array, label
#modfunc func2
#global
#uselib "hoge"
#func hoge1 "hoge1" int, var, str, wstr, sptr, wptr
#cfunc hoge2 "hoge2" double, float, pval, comobj, bmscr, prefstr, pexinfo, nullptr
#usecom testcom "{00000000-0000-0000-0000-000000000000}"
#comfunc hoge3 0 int, var, str, wstr, double
#comfunc hoge4 1 float, pval, bmscr
#include "hspcmp.as"
#cmpopt optcode 0

mref hspctx, 68
dupptr hsphed, hspctx.0, 96 // hspctx.hsphed / sizeof HSPHED

ds_ptr = lpeek( hspctx, 12 ) // hspctx.mem_mds
max_ds = lpeek( hsphed, 28 ) // hsphed.max_ds
dupptr ds, ds_ptr, max_ds

linfo_ptr = lpeek( hspctx, 832 ) // hspctx.mem_linfo
max_linfo = lpeek( hsphed, 52 ) // hsphed.max_linfo
if max_linfo : dupptr linfo, linfo_ptr, max_linfo

finfo_ptr = lpeek( hspctx, 840 ) // hspctx.mem_finfo
max_finfo = lpeek( hsphed, 60 ) // hsphed.max_finfo
dupptr finfo, finfo_ptr, max_finfo

minfo_ptr = lpeek( hspctx, 836 ) // hspctx.mem_minfo
max_minfo = lpeek( hsphed, 68 ) // hsphed.max_minfo
dupptr minfo, minfo_ptr, max_minfo

if max_linfo {
	mes "* LINFO"
	for i, 0, max_linfo, 16 // sizeof LIBDAT == 16
		flag = lpeek( linfo, i + 0 )
		nameidx = lpeek( linfo, i + 4 )
		hlib = lpeek( linfo, i + 8 )
		clsid = lpeek( linfo, i + 12 )

		;mes "flag = " + flag
		mes strf( "name = %s", ds_ptr + nameidx )
		;mes "hlib = " + hlib
		;mes "clsid = " + clsid
	next
}

mes "* FINFO"
for i, 0, max_finfo, 28 // sizeof STRUCTDAT == 28
	index = wpeek( finfo, i + 0 )
	subid = wpeek( finfo, i + 2 )
	prmindex = lpeek( finfo, i + 4 )
	prmmax = lpeek( finfo, i + 8 )
	nameidx = lpeek( finfo, i + 12 )
	size = lpeek( finfo, i + 16 )
	otindex = lpeek( finfo, i + 20 )
	proc = lpeek( finfo, i + 24 )
	funcflag = proc
	out = strf( "%s", ds_ptr + nameidx )
	is_ctype = index == 0xfffe
	if index >= 0 {
		is_ctype = ( otindex & 4 ) != 0
	}
	if is_ctype : out += "(" : else : out += " "
	repeat prmmax
		if cnt : out += ", "
		mptype = wpeek( minfo, ( prmindex + cnt ) * 8 + 0 )
		gosub *gettypename
		out += refstr
	loop
	if is_ctype : out += ")"
	mes out
next

;mes "* MINFO"
for i, 0, max_minfo, 8 // sizeof STRUCTPRM == 8
	mptype = wpeek( minfo, i + 0 )
	subid = wpeek( minfo, i + 2 )
	offset = lpeek( minfo, i + 4 )
	;mes "mptype = " + mptype
	;mes "subid = " + subid
	;mes "offset = " + offset
next
stop

*gettypename
	switch mptype
	case      0 : return "none"
	case      1 : return "var"
	case      2 : return "str"
	case      3 : return "double"
	case      4 : return "int"
	case      5 : return "struct"
	case      7 : return "label"
	case 0xffff : return "local"
	case 0xfffe : return "array"
	case 0xfffd : return "var"
	case 0xfffc : return "float"
	case 0xfffb : return "structtag"
	case 0xfffa : return "str"
	case 0xfff9 : return "modvar"
	case 0xfff8 : return "pval"
	case 0xfff7 : return "bmscr"
	case 0xfff6 : return "var"
	case 0xfff5 : return "modinit"
	case 0xfff4 : return "comobj"
	case 0xfff3 : return "wstr"
	case 0xfff2 : return "sptr"
	case 0xfff1 : return "wptr"
	case 0xfff0 : return "prefstr"
	case 0xffef : return "pexinfo"
	case 0xffee : return "pdpminfo"
	case 0xffed : return "nullptr"
	case 0xffec : return "modterm"
	swend
	return "unknown"
* LINFO
name = hoge
name =
name = hspcmp.dll
* FINFO
m0 structtag, local, local, local
__init modvar, int
__term modvar
func1(str, int, local, double, var, array, label)
func2 modvar
hoge1 int, var, str, wstr, sptr, wptr
hoge2 double, float, pval, comobj, bmscr, prefstr, pexinfo, nullptr

 comobj, int, var, str, wstr, double
 comobj, float, pval, bmscr
_hsc_ini@16 bmscr, str, int, int
_hsc_refname@16 bmscr, str, int, int
_hsc_objname@16 bmscr, str, int, int
_hsc_compath@16 bmscr, str, int, int
_hsc_comp@16 int, int, int, int
_hsc_getmes@16 var, int, int, int
_hsc_clrmes@16 int, int, int, int
_hsc_ver@16 int, int, int, prefstr
_hsc_bye@16 int, int, int, int
_hsc3_getsym@16 int, int, int, int
_hsc3_messize@16 var, int, int, int
_hsc3_make@16 bmscr, str, int, int
_hsc3_getruntime@16 var, str, int, int
_hsc3_run@16 var, int, int, int
_pack_ini@16 bmscr, str, int, int
_pack_view@16 int, int, int, int
_pack_make@16 int, int, int, int
_pack_exe@16 int, int, int, int
_pack_opt@16 int, int, int, int
_pack_rt@16 bmscr, str, int, int
_pack_get@16 bmscr, str, int, int
_aht_ini@16 bmscr, str, int, int
_aht_stdbuf@16 var, int, int, int
_aht_stdsize@16 var, int, int, int
_aht_source@16 pexinfo, nullptr, nullptr, nullptr
_aht_makeinit@16 int, int, int, int
_aht_make@16 var, str, int, int
_aht_makeend@16 bmscr, str, int, int
_aht_makeput@16 bmscr, str, int, int
_aht_getopt@16 var, str, int, int
_aht_prjsave@16 bmscr, str, int, int
_aht_prjload@16 bmscr, str, int, int
_aht_getprjsrc@16 pexinfo, nullptr, nullptr, nullptr
_aht_getprjmax@16 pexinfo, nullptr, nullptr, nullptr
_aht_prjload2@16 pexinfo, nullptr, nullptr, nullptr
_aht_prjloade@16 pexinfo, nullptr, nullptr, nullptr
_aht_getpage@16 pexinfo, nullptr, nullptr, nullptr
_aht_setpage@16 int, int, int, int
_aht_parts@16 pexinfo, nullptr, nullptr, nullptr
_aht_getparts@16 pexinfo, nullptr, nullptr, nullptr
_aht_findstart@16 pexinfo, nullptr, nullptr, nullptr
_aht_findparts@16 pexinfo, nullptr, nullptr, nullptr
_aht_findend@16 pexinfo, nullptr, nullptr, nullptr
_aht_listparts@16 pexinfo, nullptr, nullptr, nullptr
_aht_propupdate@16 pexinfo, nullptr, nullptr, nullptr
_aht_getexid@16 pexinfo, nullptr, nullptr, nullptr
_aht_getpropcnt@16 var, int, int, int
_aht_getprop@16 var, int, int, int
_aht_getpropid@16 var, str, int, int
_aht_getproptype@16 var, int, int, int
_aht_getpropmode@16 var, int, int, int
_aht_setprop@16 bmscr, str, int, int
_aht_sendstr@16 var, int, int, int
_aht_getmodcnt@16 var, int, int, int
_aht_getmodaxis@16 var, int, int, int
_aht_setmodaxis@16 int, int, int, int
_aht_delmod@16 int, int, int, int
_aht_linkmod@16 int, int, int, int
_aht_unlinkmod@16 int, int, int, int