易码技术论坛

 找回密码
 加入易码
搜索
查看: 221145|回复: 2

[原创]lava1.0的伪指令 11.23重新编辑

[复制链接]
发表于 2006-11-19 16:55:20 | 显示全部楼层
怎么最近都发这类东西,有意义么?
从0-50?被骗了~
发表于 2006-11-19 20:14:47 | 显示全部楼层
楼主果然~~
 楼主| 发表于 2006-11-19 15:31:38 | 显示全部楼层 |阅读模式
[sell=50]  [原创]lava1.0的伪指令

0x01  (ph1 num)  后接#NUM(1B),把#NUM送入堆栈 SP+=4
0x02  (ph2 num)  后接#NUM(2B),把#NUM送入堆栈 SP+=4
0x03  (ph4 num)  后接#NUM(4B),把#NUM送入堆栈 SP+=4
0x04  (phc addr[data])  后接addr(2B),把addr处的char数据送入堆栈 SP+=4
0x05  (phi addr[data])  后接addr(2B),把addr处的int数据送入堆栈 SP+=4
0x06  (phl addr[data])  后接addr(2B),把addr处的long数据送入堆栈 SP+=4
0x07  (phc addr+[data])  后接addr(2B),把addr+[sp-4]处的数据放[sp-4]中,用于char数据  addr+[sp-4]的数据,0,0,0->[sp-4]
0x08  (phi addr+[data])  后接addr(2B),把addr+[sp-4]处的数据放[sp-4]中,用于int数据  addr+[sp-4]的数据,0,0->[sp-4]
0x09  (phl addr+[data])  后接addr(2B),把addr+[sp-4]处的数据放[sp-4]中,用于long数据  addr+[sp-4]的数据->[sp-4]
0x0a  (ahc addr+[addr])  后接addr(2B),把addr+[sp-4]的地址放[sp-4]中  addr+[sp-4](地址),01,00->[sp-4]
0x0b  (ahi addr+[addr])  后接addr(2B),把addr+[sp-4]的地址放[sp-4]中  addr+[sp-4](地址),02,00->[sp-4]
0x0c  (ahl addr+[addr])  后接addr(2B),把addr+[sp-4]的地址放[sp-4]中  addr+[sp-4](地址),04,00->[sp-4]
0x0d  (phn)  后接字符串,以00结束  (NC3000的存放地址为$7000)
0x0e  (phc oaddr[data])  后接oaddr(2B),把addr处的char数据送堆栈  sp+=4
0x0f  (phi oaddr[data])  后接oaddr(2B),把addr处的int数据送堆栈  sp+=4
0x10  (phl oaddr[data])  后接oaddr(2B),把addr处的long数据送堆栈  sp+=4
0x11  (phc oaddr+[data])  后接oaddr(2B),把addr+[sp-4]处的数据放[sp-4]中,用于char数据  addr+[sp-4]的数据,0,0,0->[sp-4]
0x12  (phi oaddr+[data])  后接oaddr(2B),把addr+[sp-4]处的数据放[sp-4]中,用于int数据  addr+[sp-4]的数据,0,0->[sp-4]
0x13  (phl oaddr+[data])  后接oaddr(2B),把addr+[sp-4]处的数据放[sp-4]中,用于long数据  addr+[sp+4]的数据->[sp-4]
0x14  (ahc oaddr+[oaddr])  后接oaddr(2B)  oaddr+[sp-4](地址),81,00->[sp-4]
0x15  (ahi oaddr+[oaddr])  后接oaddr(2B)  oaddr+[sp-4](地址),82,00->[sp-4]
0x16  (ahl oaddr+[oaddr])  后接oaddr(2B)  oaddr+[sp-4](地址),84,00->[sp-4]
0x17  (ah addr+[addr])  后接addr(2B),把[sp-4]中的地址加上addr(地址)然后放[sp-4]中,(还是地址!)
0x18  (ah oaddr+[addr])  后接addr(2B),把[sp-4]中的地址加上addr(地址)然后放[sp-4]中,(还是地址!)
0x19  (ah oaddr[addr])  后接oaddr(2B),把地址addr送堆栈  sp+=4
0x1a  (ph_TEXT)  不接,把_TEXT的地址放入堆栈  sp+=4
0x1b  (ph_GEAPH)  不接,把_GEAPH的地址放入堆栈  SP+=4
0x1c  (a=-a)  不接,把[sp-4]的符号取反,即从[sp-4]中读取数据,然后把-[sp-4]放回[sp-4]中,如a=-a
0x1d  (++a)  不接,(++运算),如b=++a 用法参考0x1f,[sp-4]中的数据=addr的数据+1,即先a++,后b=a
0x1e  (--a)  不接,(--运算),如b=--a 用法参考0x1f,[sp-4]中的数据=addr的数据-1,即先a--,后b=a
0x1f  (a++)  不接,自增(++)运算,①从[sp-4]的后两字节读取,若为0x81,0x00,则为char数据,若为0x82,0x00,则为long,然后从[sp-4]的前两个字节中取得oaddr,然后把addr中的数据+1后放回addr中.②从[sp-4]的后两字节读取,若为0x01,0x00,则为char,若为0x02,0x00,则为int,若为0x04,0x00,则为long,然后从[sp-4]的前两字节取得addr,然后把addr中的数据+1后放回addr中  [sp-4]中的数据=addr的数据  如b=a++,即先b=a,后a++
0x20  (a--)  不接,自减(--)运算,参考0x1f  如b=a--,[sp-4]中的数据=addr的数据  即先b=a,后a--
0x21  (+)  不接,从[sp-8]处得oaddr1,[sp-4]处得oaddr2,把addr1的数据加上addr2的数据后放[sp-4],  sp-=4
0x22  (-)  不接,从[sp-8]处得oaddr1,[sp-4]处得oaddr2,把addr1的数据减去addr2的数据的结果放[sp-4],  sp-=4
0x23  (&)  不接,把[sp-8]和[sp-4]的数据进行按位与运算,然后把结果放[sp-4]中,  sp-=4
0x24  (|)  不接,把[sp-8]和[sp-4]的数据进行按位或运算,然后把结果放[sp-4]中,  sp-=4
0x25  (~)  不接,把[sp-4]的数据进行按位取反运算,然后把结果放[sp-4]中
0x26  (^)  不接,把[sp-8]和[sp-4]的数据进行按位异或运算,然后把结果放[sp-4]中,  sp-=4
0x27  (&&)  不接,逻辑与运算,两个中有一个为0,则为0(否), sp-=4  比较[sp-4]和[sp-8],若都不为0,则[sp-8]=-1 (0xffff) sp-=4;否则[sp-8]=0,sp-=4;
0x28  (||)  不接,逻辑或运算,比较[sp-4]和[sp-8],若有一个非0,则[sp-8]=-1 (0xffff);否则[sp-8]=0,sp-=4
0x29  (!)  不接,逻辑非运算,若[sp-4]=0,则[sp-4]=-1,若[sp-4]!=0,则[sp-4]=0
0x2a  (*)  不接,从[sp-8]处得oaddr1,[sp-4]处得oaddr2,把addr1的数据乘以addr2的数据的结果放[sp-4],sp-=4
0x2b  (/)  不接,从[sp-8]处得oaddr1,[sp-4]处得oaddr2,把addr1的数据除以addr2的数据的结果放[sp-4],sp-=4
0x2c  (%)  不接,从[sp-8]处得oaddr1,[sp-4]处得oaddr2,把addr1的数据 %(取余) addr2的数据的结果放[sp-4],sp-=4
0x2e  (>>)  不接,从[sp-4]中取得数据#NUM,然后把[SP-8]中的数据右移(>>)#NUM位,结果放[SP-8]中,sp-=4;
0x2f  (<<)  不接,从[sp-4]中取得数据#NUM,然后把[SP-8]中的数据左移(<<)#NUM位,结果放[SP-8]中,sp-=4;
0x30  (!=)  不接,比较是否[sp-8]!=[sp-4],否=0,sp-=4
0x31  (<=)  不接,比较是否[sp-8]<=[sp-4],否=0,sp-=4
0x32  (>=)  不接,比较是否[sp-8]>=[sp-4],否=0,sp-=4
0x33  (>)  不接,比较是否[sp-8]>[sp-4],否=0,sp-=4
0x34  (<)  不接,比较是否[sp-8]<[sp-4],否=0,sp-=4
0x35  (pltd)  不接,①从[sp-8]的后两字节读取,若为0x81,0x00,则表示char数据,若为0x82,0x00,则表示int数据,若为0x84,0x00,则表示long数据,然后从[sp-4]中的相应字节数据赋给addr处的数据,sp-=4;②从[sp-8]的后两字节读取,若为0x01,0x00,则表示char数据,若为0x02,0x00,则表示int数据,若为0x04,0x00,则表示long数据,然后把[sp-4]中的相应字节数据赋给addr处的数据,sp-=4;③从[sp-8]中取得addr,把[sp-4]的数据赋给addr处的数据,sp-=4
0x36  (peek)  不接,*运算,从[sp-4]中得到addr,然后取addr处的数据放回[sp-4]中,如a=(*b)
0x37  (ph10)  不接,若原来[sp-4]为a,b,c,d,则a,b,1,0->[sp-4]  用于*a=b运算
0x38  (pop-)  不接,堆栈指针减4 (sp-=4)
0x39  (J0)  后接$fseek(3B)的文件指针,若[sp]为0则跳往lav文件的$fseek处,否则不跳
0x3a  (JN0)  后接$fseek(3B),表示文件指针,若[sp]中的数据不为0,则跳往lav文件的$fseek处,否则不跳
0x3b  (goto)  后接$fseek(3B),表示文件指针,跳往lav文件的$fseek处
0x3c  (base)  后接addr(2B),定义EP的值,EP=addr,如 3C 00 20 ,则EP=$2000
0x3d  (call)  后接$fseek(3B),调用子程序
0x3e  (void)  后接#NUM1(2B),#NUM2(B),用于每个函数的开头,#NUM1表示这个函数变量定义的字节数+5,#NUM2表示这个函数的传入参数有多少个
0x3f  (return)  不接,用于子程序返回
0x40  (end)  不接,用于lav文件尾表示main函数结束
0x41  (DIM)  后接addr(2B),#NUM(2B),str$,用于定义全局数组并赋初值,addr为数组地址,#NUM表示占用的字节数,str$为初始数据或字符串
0x42  (ph_GBUF)  不接,把_GBUF的地址放入堆栈 sp+=4
0x43  (??)  ??
0x44  (#loadall)  具体功能未知
0x45  (+NUM)  后接#NUM(2B),从[SP-4]中读出addr,然后给addr处的数据加上#NUM,结果放[SP-4]中
0x46  (-NUM)  后接#NUM(2B),从[SP-4]中读出addr,然后给addr处的数据减去#NUM,结果放[SP-4]中
0x47  (*NUM)  后接#NUM(2B),从[SP-4]中读出oaddr,然后给addr处的数据乘以#NUM,结果放[SP-4]中
0x48  (/NUM)  后接#NUM(2B),从[SP-4]中读出oaddr,然后给addr处的数据除以#NUM,结果放[SP-4]中
0x49  (%NUM)  后接#NUM(2B),从[SP-4]中读出oaddr,然后给addr处的数据%(取余)#NUM,结果放[SP-4]中
0x4a  (<<NUM)  后接#NUM(2B),把[SP-4]中的数据左移(<<)#NUM位,然后把结果放在[SP-4]中
0x4b  (>>NUM)  后接#NUM(2B),把[SP-4]中的数据右移(>>)#NUM位,然后把结果放在[SP-4]中
0x4c  (==NUM)  后接#NUM(2B),比较是否[SP-4]==#NUM,否=0
0x4d  (!=NUM)  后接#NUM(2B),比较是否[SP-4]!=#NUM,否=0
0x4e  (>NUM)  后接#NUM(2B),比较是否[SP-4]>#NUM,否=0
0x4f  (<NUM)  后接#NUM(2B),比较是否[SP-4]<#NUM,是=-1,否=0
0x50  (>=NUM)  后接#NUM(2B),比较是否[SP-4]>=#NUM,是=-1,否=0
0x51  (<=NUM)  后接#NUM(2B),比较是否[SP-4]<=#NUM,是=-1,否=0

seeka.rar

4 KB, 下载次数: 177

您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

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

GMT+8, 2024-4-28 06:24 , Processed in 0.012112 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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