変数一覧

オブジェクトファイルと戯れてみる。

exist "obj"
if strsize < 0 : end
sdim axbuf, strsize
bload "obj", axbuf
pt_ds = lpeek( axbuf, 24 )
max_ds = lpeek( axbuf, 28 )
pt_dinfo = lpeek( axbuf, 40 )
max_dinfo = lpeek( axbuf, 44 )

;mes pt_dinfo
;mes max_dinfo
dupptr dinfo, varptr( axbuf ) + pt_dinfo, max_dinfo
dupptr ds, varptr( axbuf ) + pt_ds, max_ds

repeat max_dinfo
	char = peek( dinfo, cnt )
	if char == 255 : break
	if char == 254 {
		ds_offset = lpeek( dinfo, cnt + 1 ) & 0x00ffffff
		;mes ds_offset
		;dupptr filename, varptr( ds ) + ds_offset, 1, vartype("str")
		filename = strf( "%s", varptr( ds ) + ds_offset )
		;mes filename
		lineno = wpeek( dinfo, cnt + 1 + 3 )
		;mes lineno
		continue cnt + 1 + 3 + 2
	}
	if char == 253 {
		ds_offset = lpeek( dinfo, cnt + 1 ) & 0x00ffffff
		varname = strf( "%s", varptr( ds ) + ds_offset )
		mes varname
		dummy = wpeek( dinfo, cnt + 1 + 3 )
		;mes dummy
		continue cnt + 1 + 3 + 2
	}
	if char == 252 {
		continue cnt + 1 + 2
	}
loop

ここから、変数IDから変数を、逆に変数から変数IDを取得できれば色々面白そうなことができそうだと思うんだけど。