LAV转化HEX
今天试下用yan的编译器编译文件 然后用EWE查看发现了这些东西LAVAX的机器码(TC800)
1.文件头(无#loadall)
4c41561200000000
0000000000000079
3c00203b180000ad
3eXX0000
XX为定义的总长度(在05的基础上加,有序号的)char +1 int +2 long+4
2.printf
0d.......00010182(0d...00是"...")
3.getchar
8138
4. =
03xx00810001xx3538(char )
03xx00810002xxxx3538(int)
03xx00840003xxxxxxxx3538(long )
xx:定义序号 (第一个是05)
xx/xxxx/xxxxxxxx:值 换算方法和一般的相同如:235d就是0x5d23
还会继续找~~
也希望大家 帮忙一起找
5月24日
Delay() 01xx87(char)02xxxx87(int)
SetScreen(); 01xx85
CLEARSCREEN(); 8E
CHECKKEY(128);01(80)BC38
Refresh(); 89
ReleaseKey(); 01(80)c6
调用变量0EXX00(XX是变量序号+4)
关系符号 <3438 >3338 >=3238 <=3138 !=3038
IF (); 39xx
结束标志 40
+ 45 - 46
连续赋值 例:char a,b;a=b=20;
0305008100 0306008100 01 14 35 35 38(2个35)
判断 例: if(a<=b)
;
0E0500 0E0600 3138 3937 0000
希望对大家编程 改游戏有帮助
[ 本帖最后由 星柠檬 于 2008-5-24 17:21 编辑 ] =.=这不叫转Hex,这是伪代码啊,Lava虚拟机的指令码 凑合吧 应该用EWE能改吧? 以下源自yan的代码:堆栈的基本元素占用4字节
///////////////////////////////////////////////////////////////
虚拟码格式 参数占用字节 堆栈指针变化 说明
-------------------------------------------------
0x00 (null) 0B +0 无
0x01 char_number 1B +1 将1字节的char_number压入堆栈
0x02 int_number 2B +1 将2字节的int_number 压入堆栈
0x03 long_number 4B +1 将4字节的long_number压入堆栈
-------------------------------------------------
0x04 var_address 2B +1 将var_address所指的内存地址里取出1字节数据压入堆栈
0x05 var_address 2B +1 将var_address所指的内存地址里取出2字节数据压入堆栈
0x06 var_address 4B +1 将var_address所指的内存地址里取出4字节数据压入堆栈
-------------------------------------------------
0x07 var_address 2B +1 将堆栈中弹出的数据与var_address相加所指的内存地址里取出1字节数据压入堆栈
0x08 var_address 2B +1 将堆栈中弹出的数据与var_address相加所指的内存地址里取出2字节数据压入堆栈
0x09 var_address 4B +1 将堆栈中弹出的数据与var_address相加所指的内存地址里取出4字节数据压入堆栈
-------------------------------------------------
0x0a var_address 2B +1 将堆栈中弹出的数据与var_address相加所得的数据&0x0000ffff|0x00010000再压入堆栈
0x0b var_address 2B +1 将堆栈中弹出的数据与var_address相加所得的数据&0x0000ffff|0x00020000再压入堆栈
0x0c var_address 4B +1 将堆栈中弹出的数据与var_address相加所得的数据&0x0000ffff|0x00040000再压入堆栈
-------------------------------------------------
0x0d string .. +1 将字符串数据填入循环缓冲区里并将该字符串所在的地址压入堆栈
-------------------------------------------------
0x0e var_address 2B +1 将函数起始地址与var_address相加所指的内存地址里取出1字节数据压入堆栈
0x0f var_address 2B +1 将函数起始地址与var_address相加所指的内存地址里取出2字节数据压入堆栈
0x10 var_address 2B +1 将函数起始地址与var_address相加所指的内存地址里取出4字节数据压入堆栈
-------------------------------------------------
0x11 var_address 2B +1 将堆栈中弹出的数据与函数起始地址相加再与var_address相加所指的内存地址里取出1字节数据压入堆栈
0x12 var_address 2B +1 将堆栈中弹出的数据与函数起始地址相加再与var_address相加所指的内存地址里取出2字节数据压入堆栈
0x13 var_address 2B +1 将堆栈中弹出的数据与函数起始地址相加再与var_address相加所指的内存地址里取出4字节数据压入堆栈
-------------------------------------------------
0x14 var_address 2B +1 将堆栈中弹出的数据与函数起始地址相加再与var_address相加所得的数据&0x0000ffff|0x00010000再压入堆栈
0x15 var_address 2B +1 将堆栈中弹出的数据与函数起始地址相加再与var_address相加所得的数据&0x0000ffff|0x00020000再压入堆栈
0x16 var_address 2B +1 将堆栈中弹出的数据与函数起始地址相加再与var_address相加所得的数据&0x0000ffff|0x00040000再压入堆栈
-------------------------------------------------
0x17 var_address 4B +1 将堆栈中弹出的数据与var_address相加所得的数据压入堆栈
0x18 var_address 4B +1 将堆栈中弹出的数据与函数起始地址相加再与var_address相加所得的数据压入堆栈
0x19 var_address 4B +1 将函数起始地址与var_address相加所得的数据压入堆栈
-------------------------------------------------
//=================================================================================
69 XXYY=push4B #(pop4B+0x0000XXYY)
70 XXYY=push4B #(pop4B-0x0000XXYY)
71 XXYY=push4B #(pop4B*0x0000XXYY)
72 XXYY=push4B #(pop4B\0x0000XXYY)
73 XXYY=push4B #(pop4B%0x0000XXYY)
74 XXYY=push4B #(pop4B<<0x0000XXYY)
75 XXYY=push4B #(pop4B>>0x0000XXYY)
76 XXYY=push4B #(pop4B==XXXX)
77 XXYY=push4B #(pop4B!=XXXX)
78 XXYY=push4B #(pop4B>XXXX)
79 XXYY=push4B #(pop4B<XXXX)
80 XXYY=push4B #(pop4B>=XXXX)
81 XXYY=push4B #(pop4B<=XXXX)
26=push4byte _TEXT
27=push4byte _GRAPH
66=push4byte _GBUF
33="+" = push4B #(pop4B+pop4B)
34="-" = push4B #(-pop4B+pop4B)
35=&
36=|
37..~
38=^
39=&&逻辑与运算符
40=||逻辑或运算符
41= "!"逻辑非运算符
42="*" = push4B #(pop4B*pop4B)
43="/" = push4B #(1/(pop4B/pop4B))
44= "%"求余运算符
45=<<
46=>>
60 AB CD =START POINT @ 0xCDAB
52= "<"
51= ">"
50= ">="
49= "<="
47= "=="
48= "!="
28= "-"负号运算符
53 赋值(堆栈寻址) 00 20 04 00,public 00 20 84 00,private
54=push1B $pop4B,push3B #$000000
55=pop2B,push2B #0400??
56 pop4b!!
31 x++(堆栈寻址)=inc x;push x
32 x--(堆栈寻址)
29 ++x =push x;inc x
30 --x
61 AB CD EF =CALL EFCDAB(file offset)
57 AB CD EF =IF FALSE GOTO EFCDAB(file offset)
59 AB CD EF =GOTO EFCDAB(file offset)
62 XX YY ZZ =函数头,YYXX:函数代码偏移,ZZ:函数参数个数
63=RTS??
64=END??
68=#loadall
128=putchar
129=getchar
130=printf
131=strcpy
132=strlen
133=SetScreen
134=UpdateLCD
135=Delay
136=WriteBlock
137=Refresh
138=TextOut
139=Block
140=Rectangle
141=exit();
142=ClearScreen
143=abs();
144=rand();
145=srand();
146=Locate
147=Inkey();
148=Point
149=GetPoint
150=Line
151=Box
152=Circle
153=Ellipse
154=Beep();
155=isalnum
156=isalpha
157=iscntrl
158=isdigit
159=isgraph
160=islower
161=isprint
162=ispunct
163=isspace
164=isupper
165=isxdigit
166=strcat
167=strchr
168=strcmp
169=strstr
170=tolower
171=toupper
172=memset();
173=memcpy();
174=fopen
175=fclose
176=fread
177=fwrite
178=fseek
179=ftell
180=feof
181=rewind
182=getc
183=putc
184=sprintf
185=MakeDir
186=DeleteFile
187=Getms
188=CheckKey
189=memmove
190=Crc16
191=Secret
192=ChDir
193=FileList
194=GetTime
195=SetTime
196=GetWord
197=XDraw
198=ReleaseKey
199=GetBlock
200=Sin
201=Cos
202=FillArea
//----------------------------------------------------以下是LAVA3.0的--------------------------------------------------------
203=SetGraphMode
204=SetBgColor
205=SetFgColor
206=SetList
207=Fade
208=Exec (undocumented, parameters unknown, possible proto is : int Exec(int flag,addr LavaFile); )
209=FindFile
210=GetFileNum
D3=System.(push Sub-Routine Num.D3)
00=GetPID
01=void SetBrightness(int n);
02=int GetBrightness(void);
03=void ComOpen(void);
04=viod ComClose(void);
05=void ComWaitReady(void);
06=int ComSetTimer(int);//有误
07=int ComGetc(void);
08=int ComPutc(int Byte);
09=int ComRead(int size,addr buffer);
0A=int ComWrite(int size,addr buffer)
0B=int ComXor(int size,addr buffer);
0C=RamRead
0D=DiskReclaim
0E=DiskCheck
0F=FlmDecode
10=SndPlay
11=SndOpen
12=SndClose
13=SndIfEnd
14=long PY2GB(page,spell,word);
15=SndPlayFile
16=SndSetVolume
17=SndGetVolume
18=SndStop
19=SndPause
1A=SndResume
1B=Idle
1C=GetVersion
D4=Math.
00= (undocumented)
01= (undocumented)
02=add (undocumented)
03=sub (undocumented)
04=mul (undocumented)
05=div (undocumented)
06= (undocumented)
07=sin
08=cos
09=tan
0A=asin
0B=acos
0C=atan
0D=sqrt
0E=exp
0F=log
10= (undocumented)
11= (undocumented) 汗,这个都弄出来了。。。。 yan编译器工程包貌似有:L 恩。。。。。 逆向的还不错
不过,现在俺的重心已经是iava了:lol iava.........一直在等.... 成功 改了游戏的DELAY 值:lol 又是一个yan? 就一个问题
v5100能用不 厄,这个只是Lava滴伪代码,支持LavaX滴机子都能用。。。。
5100滴话,可以用这个修改游戏滴Delay值,从而达到减少游戏延时滴效果,不过估计效果不是很大。。。 差很多~~~HOHO~
不过没有Delay的就没法改了关键是不知道在哪加 这说明了一个问题:
wqx慢的要死,以至于不需要delay:lol Delay给电脑用的.... 原帖由 TYCY 于 2008-5-16 18:13 发表 http://bbs.emsky.net/images/common/back.gif
又是一个yan?
我最佩服yan了我和他根本没法比我什么也不会 YAN是很厉害的说:lol 恩是啊 ~~
页:
[1]
2