能力值:
( LV5,RANK:60 )
|
-
-
2 楼
好像
@@是可以重复的标号,@b就是上一个@@,@f是下一个@@,不知道对不对。b=back,f=forward。实在不记得,就看看罗云彬的那本书讲过。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
谢谢楼上,我去看看
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
Win32汇编的标号和 @@
(相当于C中的goto)
当在程序中使用一条跳转指令的时候,可以用标号来表示跳转的目的地,编译器在编译的时候会把它替换成地址,
标号既可以定义在目的指令同一行的头部,也可以在目的指令前一行单独用一行定义,标号定义的格式是:
标号名: 目的指令
标号的作用域是当前的子程序,在单个子程序中的标号不能同名,否则编译器不知该用哪个地址,但在不同的子程序中可以有相同名称的标号,这意味着不能从一个子程序中用跳转指令跳到另一个子程序中。
在低版本的MASM中,标号在整个程序中是惟一的,子程序中的标号也可以从整个程序的任何地方转入。
但Win32汇编使用的高版本MASM中不允许这样,这是为了提供对局部变量和参数的支持,由于在子程序入口处有对堆栈的初始化指令,所以一个子程序不允许有多个入口,其结果就是标号的作用域变成了单个子程序范围。
MASM中的@@
当用@@做标号时,可以用@F和@B来引用它,@F表示本条指令后的第一个@@标号,@B表示本条指令前的第一个@@标号,程序中可以有多个@@标号,@B和@F只寻找匹配最近的一个。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
确实是这样,谢谢 fatecaster
|
能力值:
( LV6,RANK:90 )
|
-
-
6 楼
就是为了解决汇编中,跳转命名是个麻烦的事情,发明了@@ @b @f.
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
我也是新学的,把我理解的意思传达给你,理解的不对,请不要见怪.
@@:是给出一个地址也可以理解成一座房子
@b: 是前门,你要进去就走前门
@f: 是后门,你出来的时候走后门
流程是@b=>@@=>@f
@b出现就是要进一座房子,进哪个房子呢@@,进去就得出来那就走后门@f
如果没有@b的话也就是不进门后面给出房子@@无效,没有进就不会涉及到出@f的问题
如果@b进去了@@但是没有出@f,那就只能在里边待着了,再有一座房子@@你也进不去
所以出现这些情况的时候就会报错
^O^
|
|
|