HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1110
Peekの中の人AXファイルの構造の解説6未解決


Peekの中の人

リンク

2012/11/10(Sat) 13:10:40|NO.50558

ここ以外にAXファイルの構造をわかりやすく解説したものはないでしょうか。
もしご存知でしたら教えてください。

http://hspdev-wiki.net/?cmd=read&page=OpenHSP%A4%CE%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB%2FAX%A5%D5%A5%A1%A5%A4%A5%EB%B9%BD%C2%A4
http://dev.onionsoft.net/svn/openhsp/trunk/package/win32/hspsdk/hsp3code.txt



この記事に返信する


check

リンク

2012/11/10(Sat) 13:20:07|NO.50559

HSPコンパイラとHSPランタイムのソースコード。



Peekの中の人

リンク

2012/11/10(Sat) 13:31:14|NO.50560

>50559
すみません。C++はわかりません。



774

リンク

2012/11/10(Sat) 14:07:10|NO.50561

HSPLetのソースコードとか



Peekの中の人

リンク

2012/11/11(Sun) 15:47:29|NO.50576

AXファイルを解釈するソースを途中まで書きましたが、うまく動きません。
どなたか助言をください。

*fileload sdim _axname dim _axsize dialog "ax",16,"Ax File" _axname =refstr if stat { exist _axname _axsize =strsize if _axsize =-1 : gosub *error sdim _axfile,_axsize bload _axname,_axfile }else{ gosub *error } *header sdim _tmp,4 lpoke _tmp,cnt,lpeek(_axfile,cnt) if _tmp !"HSP3" : gosub *error dim _inf,6 repeat 6 lpoke _inf(cnt),0,lpeek(_axfile,16+cnt*4) loop gosub *cstype *cs dim _cptr repeat dim _tmph dim _tmpc dim _tmp dim _flag,5 wpoke _tmph,0,wpeek(_axfile,_inf(0)+_cptr) _cptr +=2 _flag(0) =_tmph &0xfff _tmp =0x1000 repeat 4,1 _flag(cnt) =_tmph &_tmp !=0 _tmp <<1 loop if _flag(4){ wpoke _tmpc,0,wpeek(_axfile,inf(0)+_cptr) _cptr +=2 }else{ lpoke _tmpc,0,lpeek(_axfile,inf(0)+_cptr) _cptr +=4 } if _cptr >=_inf(1) :gosub *exit mes _typename(_flag(0))+"; "+_flag(0) repeat length(_flag) mes _flag(cnt) loop mes strf("%03x",_tmpc) //mes 111 + 222のCSを解釈しようとするとトチる stop loop stop *cstype sdim _typename,19 _typename ="TYPE_MARK", "TYPE_VAR", "TYPE_STRING", "TYPE_DNUM", "TYPE_INUM", "TYPE_STRUCT", "TYPE_XLABEL", "TYPE_LABEL", "TYPE_INTCMD", "TYPE_EXTCMD", "TYPE_EXTSYSVAR", "TYPE_CMPCMD", "TYPE_MODCMD", "TYPE_INTFUNC", "TYPE_SYSVAR", "TYPE_PROGCMD", "TYPE_DLLFUNC", "TYPE_DLLCTRL", "TYPE_USERDEF" return *exit dialog "Done.",0 *error dialog "!",1 end /* //////////////////////////////////////////////////////////////////////// // 変数の概要 //////////////////////////////////////////////////////////////////////// _ax*** name AXファイルの名前 size AXファイルの大きさ file AXファイルの内容 _inf 0 pt_cs 1 max_cs 2 pt_ds 3 max_ds 4 pt_ot 5 max_ot //後は使い方がわからないので読み捨て _tmp 一時変数。 _cptr CS内のポインタ? _tmph 中間コードの頭16bit。 _tmpc 中間コードのCode。 _flag CSに関する変数 0 Type 1 Ex0 2 Ex1 3 Ex2 4 最上位ビット



YSR

リンク

2012/11/11(Sun) 16:53:24|NO.50578

反則臭いけど某逆コンパイラのソース参考にすれば?



暇人

リンク

2012/11/11(Sun) 23:26:29|NO.50589

>AXファイルを解釈するソースを途中まで書きましたが、うまく動きません。

NO.50558に貼ってるURL先に
「axファイルのCSを分かりやすく表示するスクリプト」
が載ってるじゃん

明らかに可笑しいのは

_flag(cnt) =_tmph &_tmp !=0
&より比較演算子のが優先順位が高いから右から演算されてる

if _flag(4){ wpoke _tmpc,0,wpeek(_axfile,inf(0)+_cptr) _cptr +=2 }else{ lpoke _tmpc,0,lpeek(_axfile,inf(0)+_cptr) _cptr +=4 }
上の流れならif _flag(4)=0 {になるんじゃ?
後infに_が付いてない



ONION software Copyright 1997-2023(c) All rights reserved.