u654f 发表于 2016-8-24 23:01:29

win32 @@符号给个完整的例子

本帖最后由 u654f 于 2016-8-28 21:50 编辑

win32 @@符号用法给个完整的例子

航海王 发表于 2016-8-24 23:01:30

本帖最后由 航海王 于 2016-8-29 08:15 编辑

u654f 发表于 2016-8-28 21:49
书上的内容我知道,但是他说的不够详细,我测试过一些例子@F好像不能出现在@@前面,@B不能出现在@@后面, ...

    mov    cx,1000h
    @@:
      newiodelay
      loop    short @B
等于
      mov    cx,1000h
    loop1:
      newiodelay
      loop    loop1
还有一个
       
   mov ax, 0
@@:      ;标号1
   inc ax
   cmp ax, 0100h
   je @F   ;跳转到下一个 @@: 处, 也就是 标号2
   jmp @B   ;跳转到上一个 @@: 处, 也就是 标号1
@@:      ;标号2
   ...
   ...

无符号整形 发表于 2016-8-25 08:03:33

本帖最后由 无符号整形 于 2016-8-25 08:09 编辑

先看看格式,下面是从百科上面扒拉下来的,栗子是原创的。{:10_297:}

以“?”标识函数名的开始,后跟函数名;
函数名后面以“@@YG”标识参数表的开始,后跟参数表;
参数表以代号表示:
X--void ,
D--char,
E--unsigned char,
F--short,
H--int,
I--unsigned int,
J--long,
K--unsigned long,
M--float,
N--double,
_N--bool,
PA--表示指针,后面的代号表明指针类型,如果相同类型的指针连续出现,以“0”代替,一个“0”代
表一次重复;
参数表的第一项为该函数的返回值类型,其后依次为参数的数据类型,指针标识在其所指数据类型前

参数表后以“@Z”标识整个名字的结束,如果该函数无参数,则以“Z”标识结束。
比如int test()
分析一下
返回值是int
无参数
那么就是?test@@YGHXZ
上面的YG表示参数表开始
上面的H表示返回值是int
上面的X表示参数表为空
上面的Z表示名称结束
再来一个栗子
int test2(int i,int* p)
就是?test2YGHHPAHZ
YG表示参数表开始
H表示返回值为int
第二个H表示有一个类型为i的参数
PAH表示有一个类型为int*的指针
Z表示名称结束

u654f 发表于 2016-8-25 10:53:42

无符号整形 发表于 2016-8-25 08:03
先看看格式,下面是从百科上面扒拉下来的,栗子是原创的。

比如int test()


这么一大堆虽然很详细,但我楞是没看懂,弱弱问一句这是Win32里面的吗?我只需要@@:标号的用法,跟常见的使用场景,给个例子就好。

无符号整形 发表于 2016-8-25 11:38:08

u654f 发表于 2016-8-25 10:53
这么一大堆虽然很详细,但我楞是没看懂,弱弱问一句这是Win32里面的吗?我只需要@@:标号的用法,跟常见的 ...

是的。

航海王 发表于 2016-8-28 18:51:15

本帖最后由 航海王 于 2016-8-28 18:54 编辑

windows环境下32位汇编程序设计 上有

u654f 发表于 2016-8-28 21:49:22

航海王 发表于 2016-8-28 18:51
windows环境下32位汇编程序设计 上有

书上的内容我知道,但是他说的不够详细,我测试过一些例子@F好像不能出现在@@前面,@B不能出现在@@后面,这样感觉@@用法局限性太大了,想问它通常会用在什么地方。要完整例子。

immortalfaith 发表于 2016-9-11 19:19:47

跳转符号

key2046 发表于 2017-1-16 16:12:27


书上的内容我知道,但是他说的不够详细,我测试过一些例子@F好像不能出现在@@前面,@B不能出现在@@后面,这样感觉@@用法局限性太大了,想问它通常会用在什么地方。要完整例子
页: [1]
查看完整版本: win32 @@符号给个完整的例子