易码技术论坛

 找回密码
 加入易码
搜索
查看: 2868|回复: 38

LAV转化HEX

[复制链接]
发表于 2008-5-15 10:58:14 | 显示全部楼层 |阅读模式
今天试下用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 编辑 ]

评分

参与人数 1小红花 +5 收起 理由
玄刹忍行风 + 5 给点掌声鼓励鼓励~~

查看全部评分

发表于 2008-5-15 11:13:54 | 显示全部楼层
=.=这不叫转Hex,这是伪代码啊,Lava虚拟机的指令码
 楼主| 发表于 2008-5-15 11:15:38 | 显示全部楼层
凑合吧   应该用EWE能改吧?
发表于 2008-5-15 12:47:25 | 显示全部楼层
以下源自yan的代码:
  1. 堆栈的基本元素占用4字节
  2. ///////////////////////////////////////////////////////////////
  3. 虚拟码格式                参数占用字节        堆栈指针变化        说明
  4. -------------------------------------------------
  5. 0x00 (null)                0B                +0                无
  6. 0x01 char_number        1B                +1                将1字节的char_number压入堆栈
  7. 0x02 int_number                2B                +1                将2字节的int_number 压入堆栈
  8. 0x03 long_number        4B                +1                将4字节的long_number压入堆栈
  9. -------------------------------------------------
  10. 0x04 var_address        2B                +1                将var_address所指的内存地址里取出1字节数据压入堆栈
  11. 0x05 var_address        2B                +1                将var_address所指的内存地址里取出2字节数据压入堆栈
  12. 0x06 var_address        4B                +1                将var_address所指的内存地址里取出4字节数据压入堆栈
  13. -------------------------------------------------
  14. 0x07 var_address        2B                +1                将堆栈中弹出的数据与var_address相加所指的内存地址里取出1字节数据压入堆栈
  15. 0x08 var_address        2B                +1                将堆栈中弹出的数据与var_address相加所指的内存地址里取出2字节数据压入堆栈
  16. 0x09 var_address        4B                +1                将堆栈中弹出的数据与var_address相加所指的内存地址里取出4字节数据压入堆栈
  17. -------------------------------------------------
  18. 0x0a var_address        2B                +1                将堆栈中弹出的数据与var_address相加所得的数据&0x0000ffff|0x00010000再压入堆栈
  19. 0x0b var_address        2B                +1                将堆栈中弹出的数据与var_address相加所得的数据&0x0000ffff|0x00020000再压入堆栈
  20. 0x0c var_address        4B                +1                将堆栈中弹出的数据与var_address相加所得的数据&0x0000ffff|0x00040000再压入堆栈
  21. -------------------------------------------------
  22. 0x0d string                ..                +1                将字符串数据填入循环缓冲区里并将该字符串所在的地址压入堆栈
  23. -------------------------------------------------
  24. 0x0e var_address        2B                +1                将函数起始地址与var_address相加所指的内存地址里取出1字节数据压入堆栈
  25. 0x0f var_address        2B                +1                将函数起始地址与var_address相加所指的内存地址里取出2字节数据压入堆栈
  26. 0x10 var_address        2B                +1                将函数起始地址与var_address相加所指的内存地址里取出4字节数据压入堆栈
  27. -------------------------------------------------
  28. 0x11 var_address        2B                +1                将堆栈中弹出的数据与函数起始地址相加再与var_address相加所指的内存地址里取出1字节数据压入堆栈
  29. 0x12 var_address        2B                +1                将堆栈中弹出的数据与函数起始地址相加再与var_address相加所指的内存地址里取出2字节数据压入堆栈
  30. 0x13 var_address        2B                +1                将堆栈中弹出的数据与函数起始地址相加再与var_address相加所指的内存地址里取出4字节数据压入堆栈
  31. -------------------------------------------------
  32. 0x14 var_address        2B                +1                将堆栈中弹出的数据与函数起始地址相加再与var_address相加所得的数据&0x0000ffff|0x00010000再压入堆栈
  33. 0x15 var_address        2B                +1                将堆栈中弹出的数据与函数起始地址相加再与var_address相加所得的数据&0x0000ffff|0x00020000再压入堆栈
  34. 0x16 var_address        2B                +1                将堆栈中弹出的数据与函数起始地址相加再与var_address相加所得的数据&0x0000ffff|0x00040000再压入堆栈
  35. -------------------------------------------------
  36. 0x17 var_address        4B                +1                将堆栈中弹出的数据与var_address相加所得的数据压入堆栈
  37. 0x18 var_address        4B                +1                将堆栈中弹出的数据与函数起始地址相加再与var_address相加所得的数据压入堆栈
  38. 0x19 var_address        4B                +1                将函数起始地址与var_address相加所得的数据压入堆栈
  39. -------------------------------------------------







  40. //=================================================================================
  41. 69 XXYY=push4B #(pop4B+0x0000XXYY)
  42. 70 XXYY=push4B #(pop4B-0x0000XXYY)
  43. 71 XXYY=push4B #(pop4B*0x0000XXYY)
  44. 72 XXYY=push4B #(pop4B\0x0000XXYY)
  45. 73 XXYY=push4B #(pop4B%0x0000XXYY)
  46. 74 XXYY=push4B #(pop4B<<0x0000XXYY)
  47. 75 XXYY=push4B #(pop4B>>0x0000XXYY)
  48. 76 XXYY=push4B #(pop4B==XXXX)
  49. 77 XXYY=push4B #(pop4B!=XXXX)
  50. 78 XXYY=push4B #(pop4B>XXXX)
  51. 79 XXYY=push4B #(pop4B<XXXX)
  52. 80 XXYY=push4B #(pop4B>=XXXX)
  53. 81 XXYY=push4B #(pop4B<=XXXX)
  54. 26=push4byte _TEXT
  55. 27=push4byte _GRAPH
  56. 66=push4byte _GBUF
  57. 33="+" = push4B #(pop4B+pop4B)
  58. 34="-" = push4B #(-pop4B+pop4B)
  59. 35=&
  60. 36=|
  61. 37..  ~
  62. 38=^
  63. 39=&&逻辑与运算符
  64. 40=||逻辑或运算符
  65. 41= "!"逻辑非运算符
  66. 42="*" = push4B #(pop4B*pop4B)
  67. 43="/" = push4B #(1/(pop4B/pop4B))
  68. 44= "%"求余运算符
  69. 45=<<
  70. 46=>>
  71. 60 AB CD =START POINT @ 0xCDAB
  72. 52= "<"
  73. 51= ">"
  74. 50= ">="
  75. 49= "<="
  76. 47= "=="
  77. 48= "!="
  78. 28= "-"负号运算符
  79. 53 赋值(堆栈寻址) 00 20 04 00,public 00 20 84 00,private
  80. 54=push1B $pop4B,push3B #$000000
  81. 55=pop2B,push2B #0400  ??
  82. 56 pop4b!!
  83. 31 x++(堆栈寻址)=inc x;push x
  84. 32 x--(堆栈寻址)
  85. 29 ++x =push x;inc x
  86. 30 --x
  87. 61 AB CD EF =CALL EFCDAB(file offset)
  88. 57 AB CD EF =IF FALSE GOTO EFCDAB(file offset)
  89. 59 AB CD EF =GOTO EFCDAB(file offset)
  90. 62 XX YY ZZ =函数头,YYXX:函数代码偏移,ZZ:函数参数个数
  91. 63=RTS??
  92. 64=END??
  93. 68=#loadall
  94. 128=putchar
  95. 129=getchar
  96. 130=printf
  97. 131=strcpy
  98. 132=strlen
  99. 133=SetScreen
  100. 134=UpdateLCD
  101. 135=Delay
  102. 136=WriteBlock
  103. 137=Refresh
  104. 138=TextOut
  105. 139=Block
  106. 140=Rectangle
  107. 141=exit();
  108. 142=ClearScreen
  109. 143=abs();
  110. 144=rand();
  111. 145=srand();
  112. 146=Locate
  113. 147=Inkey();
  114. 148=Point
  115. 149=GetPoint
  116. 150=Line
  117. 151=Box
  118. 152=Circle
  119. 153=Ellipse
  120. 154=Beep();
  121. 155=isalnum
  122. 156=isalpha
  123. 157=iscntrl
  124. 158=isdigit
  125. 159=isgraph
  126. 160=islower
  127. 161=isprint
  128. 162=ispunct
  129. 163=isspace
  130. 164=isupper
  131. 165=isxdigit
  132. 166=strcat
  133. 167=strchr
  134. 168=strcmp
  135. 169=strstr
  136. 170=tolower
  137. 171=toupper
  138. 172=memset();
  139. 173=memcpy();
  140. 174=fopen
  141. 175=fclose
  142. 176=fread
  143. 177=fwrite
  144. 178=fseek
  145. 179=ftell
  146. 180=feof
  147. 181=rewind
  148. 182=getc
  149. 183=putc
  150. 184=sprintf
  151. 185=MakeDir
  152. 186=DeleteFile
  153. 187=Getms
  154. 188=CheckKey
  155. 189=memmove
  156. 190=Crc16
  157. 191=Secret
  158. 192=ChDir
  159. 193=FileList
  160. 194=GetTime
  161. 195=SetTime
  162. 196=GetWord
  163. 197=XDraw
  164. 198=ReleaseKey
  165. 199=GetBlock
  166. 200=Sin
  167. 201=Cos
  168. 202=FillArea
  169. //----------------------------------------------------以下是LAVA3.0的--------------------------------------------------------
  170. 203=SetGraphMode
  171. 204=SetBgColor
  172. 205=SetFgColor
  173. 206=SetList
  174. 207=Fade
  175. 208=Exec (undocumented, parameters unknown, possible proto is : int Exec(int flag,addr LavaFile); )
  176. 209=FindFile
  177. 210=GetFileNum
  178. D3  =System.(push Sub-Routine Num.D3)
  179.     00  =GetPID
  180.     01  =void SetBrightness(int n);
  181.     02  =int GetBrightness(void);
  182.     03  =void ComOpen(void);
  183.     04  =viod ComClose(void);
  184.     05  =void ComWaitReady(void);
  185.     06  =int ComSetTimer(int);//有误
  186.     07  =int ComGetc(void);
  187.     08  =int ComPutc(int Byte);
  188.     09  =int ComRead(int size,addr buffer);
  189.     0A  =int ComWrite(int size,addr buffer)
  190.     0B  =int ComXor(int size,addr buffer);
  191.     0C  =RamRead
  192.     0D  =DiskReclaim
  193.     0E  =DiskCheck
  194.     0F  =FlmDecode
  195.     10  =SndPlay
  196.     11  =SndOpen
  197.     12  =SndClose
  198.     13  =SndIfEnd
  199.     14  =long PY2GB(page,spell,word);
  200.     15  =SndPlayFile
  201.     16  =SndSetVolume
  202.     17  =SndGetVolume
  203.     18  =SndStop
  204.     19  =SndPause
  205.     1A  =SndResume
  206.     1B  =Idle
  207.     1C  =GetVersion
  208. D4  =Math.
  209.     00  =[return a float(0x100)] (undocumented)
  210.     01  =[float(intNum);] (undocumented)
  211.     02  =add (undocumented)
  212.     03  =sub (undocumented)
  213.     04  =mul (undocumented)
  214.     05  =div (undocumented)
  215.     06  =[int(floatNum);] (undocumented)
  216.     07  =sin
  217.     08  =cos
  218.     09  =tan
  219.     0A  =asin
  220.     0B  =acos
  221.     0C  =atan
  222.     0D  =sqrt
  223.     0E  =exp
  224.     0F  =log
  225.     10  =[float(floatStr);] (undocumented)
  226.     11  =[toString(floatNum);] (undocumented)
复制代码
发表于 2008-5-15 18:39:43 | 显示全部楼层
汗,这个都弄出来了。。。。
发表于 2008-5-15 19:14:15 | 显示全部楼层
yan编译器工程包貌似有
发表于 2008-5-15 21:53:35 | 显示全部楼层
恩。。。。。
发表于 2008-5-16 08:39:04 | 显示全部楼层
逆向的还不错
不过,现在俺的重心已经是iava了
发表于 2008-5-16 09:14:06 | 显示全部楼层
iava.........一直在等....
 楼主| 发表于 2008-5-16 12:43:08 | 显示全部楼层
成功 改了游戏的DELAY 值
发表于 2008-5-16 15:54:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-5-16 18:13:04 | 显示全部楼层
又是一个yan?
发表于 2008-5-16 20:57:16 | 显示全部楼层
就一个问题
v5100能用不
发表于 2008-5-16 22:03:48 | 显示全部楼层
厄,这个只是Lava滴伪代码,支持LavaX滴机子都能用。。。。
5100滴话,可以用这个修改游戏滴Delay值,从而达到减少游戏延时滴效果,不过估计效果不是很大。。。
 楼主| 发表于 2008-5-22 10:57:42 | 显示全部楼层
差很多~~~  HOHO~
  不过没有Delay的就没法改了  关键是不知道在哪加
发表于 2008-5-22 11:23:48 | 显示全部楼层
这说明了一个问题:
wqx慢的要死,以至于不需要delay
发表于 2008-5-22 12:14:41 | 显示全部楼层
Delay给电脑用的....
 楼主| 发表于 2008-5-22 13:34:44 | 显示全部楼层
原帖由 TYCY 于 2008-5-16 18:13 发表
又是一个yan?

  
  我最佩服yan了  我和他根本没法比  我什么也不会
发表于 2008-5-22 15:06:03 | 显示全部楼层
YAN是很厉害的说
 楼主| 发表于 2008-5-22 16:55:23 | 显示全部楼层
恩  是啊 ~~
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-20 05:18 , Processed in 0.012482 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表