标题: STAR可以考虑一下
性别:未知-离线 砖家叫兽

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 3
帖子 274
编号 406021
注册 2010-12-7


发表于 2012-2-21 23:38 资料 短消息 只看该作者
STAR可以考虑一下

STAR引擎中整形4000+都有些特殊功能 只是这几十号的功能 不但占用了整形变量 而且多了以后不方便记忆

我的引擎中72指令 变成了文字信息的处理  剧本名修改 人物名修改等等与文字相关的事情都交由这个指令,我觉得那些功能完全可以用文字指令的形式

比方 72
15
单数成长  开启

其中 开启  开  =1   这些都是关键字(本人的文字指令都是靠关键字搜索)

通过文字指令来控制 是不是比整形好一点点


说得夸张一点点,如果有4000个功能  整形变量不要用了 哈哈


顶部
性别:未知-离线 砖家叫兽

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 3
帖子 274
编号 406021
注册 2010-12-7


发表于 2012-2-21 23:46 资料 短消息 只看该作者
另外 奉献一些文字处理函数

PUSH 受地址
PUSH 尾地址
CALL
004D2770    55              PUSH EBP                                 ; 字符获取数字
004D2771    8BEC            MOV EBP,ESP
004D2773    8B4D 0C         MOV ECX,DWORD PTR SS:[EBP+C]             ; 起始地址
004D2776    33C0            XOR EAX,EAX
004D2778    3B4D 08         CMP ECX,DWORD PTR SS:[EBP+8]             ; 结束地址
004D277B    73 1A           JNB SHORT Ekd5.004D2797
004D277D    8A11            MOV DL,BYTE PTR DS:[ECX]
004D277F    41              INC ECX
004D2780    80FA 30         CMP DL,30
004D2783    72 12           JB SHORT Ekd5.004D2797
004D2785    80FA 39         CMP DL,39
004D2788    77 0D           JA SHORT Ekd5.004D2797
004D278A    80EA 30         SUB DL,30
004D278D    6BC0 0A         IMUL EAX,EAX,0A
004D2790    0FB6D2          MOVZX EDX,DL
004D2793    03C2            ADD EAX,EDX
004D2795  ^ EB E1           JMP SHORT Ekd5.004D2778
004D2797    8BE5            MOV ESP,EBP
004D2799    5D              POP EBP
004D279A    C2 0800         RETN 8

下面这个没注解的是数据复制
PUSH   复制地址
PUSH   被复制地址
PUSH   大小
CALL
004D27A0    55              PUSH EBP
004D27A1    8BEC            MOV EBP,ESP
004D27A3    8B45 10         MOV EAX,DWORD PTR SS:[EBP+10]
004D27A6    8B4D 0C         MOV ECX,DWORD PTR SS:[EBP+C]
004D27A9    837D 08 00      CMP DWORD PTR SS:[EBP+8],0
004D27AD    76 0B           JBE SHORT Ekd5.004D27BA
004D27AF    FF4D 08         DEC DWORD PTR SS:[EBP+8]
004D27B2    8A10            MOV DL,BYTE PTR DS:[EAX]
004D27B4    8811            MOV BYTE PTR DS:[ECX],DL
004D27B6    40              INC EAX
004D27B7    41              INC ECX
004D27B8  ^ EB EF           JMP SHORT Ekd5.004D27A9
004D27BA    8BE5            MOV ESP,EBP
004D27BC    5D              POP EBP
004D27BD    C2 0C00         RETN 0C


这个用于搜索关键字
PUSH    搜索地址
PUSH    关键字  (不太记得了 好像字串是地址 其它的是本身)
PUSH    类型   BYTE WORD 等
004D3690    55              PUSH EBP                                 ; 查找指针
004D3691    8BEC            MOV EBP,ESP
004D3693    56              PUSH ESI
004D3694    57              PUSH EDI
004D3695    53              PUSH EBX
004D3696    8B5D 08         MOV EBX,DWORD PTR SS:[EBP+8]             ; 分支
004D3699    33FF            XOR EDI,EDI
004D369B    33F6            XOR ESI,ESI
004D369D    8B4D 10         MOV ECX,DWORD PTR SS:[EBP+10]            ; 地址
004D36A0    8B55 0C         MOV EDX,DWORD PTR SS:[EBP+C]             ; 内容
004D36A3    81FF 00080000   CMP EDI,800
004D36A9    73 59           JNB SHORT Ekd5.004D3704
004D36AB    8139 02000500   CMP DWORD PTR DS:[ECX],50002             ; 2指令开始
004D36B1    75 05           JNZ SHORT Ekd5.004D36B8
004D36B3    85F6            TEST ESI,ESI
004D36B5    75 4D           JNZ SHORT Ekd5.004D3704                  ; 次数>1
004D36B7    46              INC ESI
004D36B8    8139 72000400   CMP DWORD PTR DS:[ECX],40072             ; 72指令开始
004D36BE    74 44           JE SHORT Ekd5.004D3704
004D36C0    47              INC EDI
004D36C1    FF249D 0F374D00 JMP DWORD PTR DS:[EBX*4+4D370F]
004D36C8    3A11            CMP DL,BYTE PTR DS:[ECX]                 ; BYTE
004D36CA    74 31           JE SHORT Ekd5.004D36FD
004D36CC    EB 2C           JMP SHORT Ekd5.004D36FA
004D36CE    66:3B11         CMP DX,WORD PTR DS:[ECX]                 ; WORD
004D36D1    74 2A           JE SHORT Ekd5.004D36FD
004D36D3    EB 25           JMP SHORT Ekd5.004D36FA
004D36D5    3B11            CMP EDX,DWORD PTR DS:[ECX]               ; DWORD
004D36D7    74 24           JE SHORT Ekd5.004D36FD
004D36D9    EB 1F           JMP SHORT Ekd5.004D36FA
004D36DB    8B02            MOV EAX,DWORD PTR DS:[EDX]               ; QWORD
004D36DD    3B01            CMP EAX,DWORD PTR DS:[ECX]
004D36DF    75 08           JNZ SHORT Ekd5.004D36E9
004D36E1    8B42 04         MOV EAX,DWORD PTR DS:[EDX+4]
004D36E4    3B41 04         CMP EAX,DWORD PTR DS:[ECX+4]
004D36E7    74 14           JE SHORT Ekd5.004D36FD
004D36E9    EB 0F           JMP SHORT Ekd5.004D36FA
004D36EB    52              PUSH EDX                                 ; STRING
004D36EC    51              PUSH ECX
004D36ED    52              PUSH EDX
004D36EE    51              PUSH ECX
004D36EF    E8 DC020000     CALL Ekd5.004D39D0
004D36F4    85C0            TEST EAX,EAX
004D36F6    75 05           JNZ SHORT Ekd5.004D36FD
004D36F8    59              POP ECX
004D36F9    5A              POP EDX
004D36FA    41              INC ECX
004D36FB  ^ EB A6           JMP SHORT Ekd5.004D36A3
004D36FD    8BC1            MOV EAX,ECX
004D36FF    33D2            XOR EDX,EDX
004D3701    42              INC EDX
004D3702    EB 02           JMP SHORT Ekd5.004D3706
004D3704    33D2            XOR EDX,EDX
004D3706    5B              POP EBX
004D3707    5F              POP EDI
004D3708    5E              POP ESI
004D3709    8BE5            MOV ESP,EBP
004D370B    5D              POP EBP
004D370C    C2 0C00         RETN 0C

004D370F  C8 36 4D 00 CE 36 4D 00 D5 36 4D 00 DB 36 4D 00  ?M.?M.?M.?M.
004D371F  EB 36 4D 00                                   ?M.烫


004D39D0    55              PUSH EBP                                 ; 比较字串
004D39D1    8BEC            MOV EBP,ESP
004D39D3    53              PUSH EBX
004D39D4    56              PUSH ESI
004D39D5    8B4D 0C         MOV ECX,DWORD PTR SS:[EBP+C]             ; 被比较
004D39D8    8B55 08         MOV EDX,DWORD PTR SS:[EBP+8]             ; 比较
004D39DB    33DB            XOR EBX,EBX
004D39DD    33F6            XOR ESI,ESI
004D39DF    46              INC ESI
004D39E0    8B01            MOV EAX,DWORD PTR DS:[ECX]
004D39E2    3C 00           CMP AL,0
004D39E4    74 19           JE SHORT Ekd5.004D39FF
004D39E6    3C 0A           CMP AL,0A
004D39E8    76 15           JBE SHORT Ekd5.004D39FF
004D39EA    3C 20           CMP AL,20
004D39EC    74 11           JE SHORT Ekd5.004D39FF
004D39EE    66:3D FFFF      CMP AX,0FFFF
004D39F2    74 0B           JE SHORT Ekd5.004D39FF
004D39F4    3A02            CMP AL,BYTE PTR DS:[EDX]
004D39F6    74 02           JE SHORT Ekd5.004D39FA
004D39F8    33F6            XOR ESI,ESI                              ; 不等
004D39FA    41              INC ECX
004D39FB    42              INC EDX
004D39FC    43              INC EBX
004D39FD  ^ EB E1           JMP SHORT Ekd5.004D39E0
004D39FF    8BC6            MOV EAX,ESI
004D3A01    8BCB            MOV ECX,EBX                              ; 长度
004D3A03    5E              POP ESI
004D3A04    5B              POP EBX
004D3A05    8BE5            MOV ESP,EBP
004D3A07    5D              POP EBP
004D3A08    C2 0800         RETN 8

[ 本帖最后由 砖家叫兽 于 2012-2-21 23:48 编辑 ]


顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2025-6-26 16:48
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.010082 second(s), 8 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP