当你要在程序中插入一段汇编语言代码的时候,使用
_asm { (汇编代码)} 注意前面有个下划线。
当你要插入一句汇编语言代码的时候,也可以这么写如
_asm MOV AL, 2
ASM是C++中的一个关键字,用于在C++源码中内嵌汇编语言。ASM能写在任何C++合法语句中,目前asm还不是C的标准关键字,C11标准未加入正文,仅在Annex J中标记为“公共扩展”。
C++中的asm关键字用法。
__asm关键字启动内联汇编并且能写在任何C++合法语句之处。它不能单独出现,必须接汇编指令、一组被大括号包含的指令或一对空括号。术语“__asm 块”在这里是任意一个指令或一组指令无论是否在括号内。
以下代码片段是在括号内的一个简单的__asm块。
_asm { mov al, 2 mov dx, 0xD007 out al, dx }
另一种方法是,你可以在每个汇编指令前放置__asm
__asm mov al, 2
__asm mov dx, 0xD007
__asm out al, dx
因为__asm关键字是一个语句分隔符,你也可以将汇编指令放在同一行。
__asm mov al, 2 __asm mov dx, 0xD007 __asm out al, dx。
以上三个的例子产生相同的代码,但是第一种风格(把__asm块用括号括起来)有一些优势。括号可以清晰的将C或C++代码和汇编代码分开,并且避免了不必要的重复__asm关键字。括号也能避免模糊性。如果你想在__asm块的同一行放置一个C或C++语句,你必须将块用括号括起来。没有括号,编译器不能区分汇编代码在哪里停止以及C或C++代码在哪里开始。最后,因为在括号的文字有和原始MASM一样的格式,你能轻松的从一个已有的MASM源文件里剪切和黏贴文字到文件来。
不同于C和C++的括号,在Visual Studio中,包含__asm块的括号对变量的作用域并没有效果。你也能嵌套__asm块,嵌套对变量作用域也没有效果。
oracle 10R2推出了asmcmd这个工具,可以用来管理asm存储上的文件。1.使用asmcmd命令必须先启动asm实例,不然会有以下报错:rac2->asmcmd -p
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory (DBD ERROR: OCISessionBegin)2.使用asmcmd必须先指定ORACLE_HOME和ORACLE_SID,注意此处ORACLE_SID是asm的sid,不然会报错:rac2->asmcmd -p
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory (DBD ERROR: OCISessionBegin)3.asmcmd命令带p参数和不带p参数的作用:
带p,使用asmcmd将显示当前路径:rac2->asmcmd -p
ASMCMD [+] >ls
DG1/
RECOVERDEST/
ASMCMD [+] >cd DG1
ASMCMD [+DG1] >ls
DEVDB/
ASMCMD [+DG1] >cd DEVDB
ASMCMD [+DG1/DEVDB] >不带p,不显示当前路径:rac2->asmcmd
ASMCMD>ls
DG1/
RECOVERDEST/
ASMCMD>cd DG1
ASMCMD>ls
DEVDB/
ASMCMD>cd DEVDB
ASMCMD>4.其他相关参数,可使用help查看ASMCMD [+] >help
asmcmd [-p] [command]
The environment variables ORACLE_HOME and ORACLE_SID determine the
instance to which the program connects, and ASMCMD establishes a
bequeath connection to it, in the same manner as a SQLPLUS / AS
SYSDBA. The user must be a member of the SYSDBA group.
Specifying the -p option allows the current directory to be displayed
in the command prompt, like so:
ASMCMD [+DATAFILE/ORCL/CONTROLFILE] >
[command] specifies one of the following commands, along with its
parameters.
Type "help [command]" to get help on a specific ASMCMD command.
commands:
--------
cd
du
find
help
ls
lsct
lsdg
mkalias
mkdir
pwd
rm
rmalias
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)