HSP3 で マシン語変換。


コールバックでマシン語を埋め込む必要があるときの、
ダンプコードからのHSP コードへの変換プログラム。

 

 

全体的なやり方については、ちょくとさんのウェブサイトの中の、

 

マシン語コードを作成してみる

を参照してください。

 

; マシン語コード変換スクリプト 簡易。

#uselib "user32.dll"
#func CharUpper "CharUpperA" var

 

varname = "code"        ; 変数名
numline = 6                ; 1行の要素数

 

; 出力されたマシン語コードを記述
cod = {"
8B 44 24 04 83 C0 1C 80 38 40 74 11 50 8B 44 24
14 6A 00 68 43 01 00 00 FF 70 04 FF 10 33 C0 40
C2 10 00
"}

 

CharUpper cod
dim alp,4 : sets = 0 : c = 0 : s = "" : res = varname+"(0)=$"
repeat 4 : alp(cnt) = "" : loop


repeat strlen(cod)
dat = peek(cod,cnt)
if (dat<48)|(90<dat) : continue
if (dat>57)&(65>dat) : continue

poke s,c\2,dat
c++
if c\2 = 0 {
        alp((c/2)-1) = s
        s = ""
        if c=8 : c=0 : gosub *mo
    }
loop

 

if c!=0 : gosub *mo

 

res = strmid(res,0,strlen(res)-3)
if (sets\2) : res = res+", $00000000" : sets++
buf = "xdim "+varname+","+sets+"\n"+res
mesbox buf, ginfo_winx, ginfo_winy, 4
stop

 

*mo
    repeat 4 : res = res + alp(3-cnt) : loop
    repeat 4 : alp(cnt) = "" : loop
    sets++
    res = res+", "
    if (sets\numline) = 0 : res = strmid(res,0,strlen(res)-2)+"\n"+varname+"("+numline+")="
    res = res+"$"
    return

 

ちょくとさんのウェブサイトに掲載されているものと比較して、信頼性が著しく違います。
向こうはちゃんとした物ですが、こっちはとりあえずそのコードを出すだけ。
動くかどうかは動かしてみるまで分かりません。

 

強烈にアバウトな感じですが、まぁ、そんな感じで。


 

関連記事