急求关于宏的详细资料,有段宏代码看不懂(内详)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 将参数列表的顺序翻转
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
reverseArgs macro arglist:VARARG
local txt,count
txt TEXTEQU <>
count = 0
for i,<arglist>
count = count + 1
txt TEXTEQU @CatStr(i,<!,>,<%txt>)
endm
if count GT 0
txt SUBSTR txt,1,@SizeStr(%txt)-1
endif
exitm txt
endm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 建立一个类似于 invoke 的 Macro
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_invoke macro _Proc,args:VARARG
local count
count = 0
% for i,< reverseArgs( args ) >
count = count + 1
push i
endm
call dword ptr _Proc
endm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
问题点数:20、回复次数:7Top
1 楼jronald(深白色)回复于 2004-08-03 16:25:06 得分 0
UPTop
2 楼kvls(冰茶)回复于 2004-08-03 16:28:31 得分 20
WIN32 汇编怎么发到这儿来了。。。
什么看不懂?全部?Top
3 楼jronald(深白色)回复于 2004-08-03 17:06:57 得分 0
全部
这方面资料真难找啊Top
4 楼jronald(深白色)回复于 2004-08-03 17:07:53 得分 0
借点人气
反正VC也能用Top
5 楼soft2003(softXP)回复于 2004-08-03 17:09:54 得分 0
http://community.csdn.net/Expert/topic/3238/3238782.xml?temp=.8875086Top
6 楼kvls(冰茶)回复于 2004-08-03 17:53:19 得分 0
写一下主要语句的意思
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 建立一个类似于 invoke 的 Macro
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_invoke macro _Proc,args:VARARG
local count
count = 0
% for i,< reverseArgs( args ) > 循环遍历reverseArgs( args )的返回值,将每个返回值循环赋给i
count = count + 1
push i 将参数压栈
endm
call dword ptr _Proc 调用函数
endm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 将参数列表的顺序翻转
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
reverseArgs macro arglist:VARARG
local txt,count
txt TEXTEQU <> 定义一个预处理文本变量
count = 0 这个用来保存参数个数
for i,<arglist> 循环遍历arglist,将每个参数的名字赋给i
count = count + 1 统计参数个数
txt TEXTEQU @CatStr(i,<!,>,<%txt>) 将每个参数倒过来练成一个文本字符串,最后的结果应该如同:参数2,参数1
endm
if count GT 0
txt SUBSTR txt,1,@SizeStr(%txt)-1 返回上面得到的参数文本字符串
endif
exitm txt
endm
PS:我这样的解释可能不太明白,在这里一个字符串和数值变量可以互相转换,比如txt是一个字符变量,但加上<txt>后可以便是取它的值 %号也是取值的意思 !是转义的意思,像txt TEXTEQU @CatStr(i,<!,>,<%txt>) 这句话,你就可以理解为txt = @CatStr(i, txt) 不过这样写会出错而已。
现在懂汇编的少,懂汇编宏的更少。Top
7 楼jronald(深白色)回复于 2004-08-03 20:05:09 得分 0
多谢Top




