新闻资讯
看你所看,想你所想

ASM(VC内嵌彙编)

ASM(VC内嵌彙编)

ASM(VC内嵌彙编)

ASM是C++中的一个关键字,用于在C++源码中内嵌彙编语言。ASM能写在任何C++合法语句中,目前asm还不是C的标準关键字,C11标準未加入正文,仅在Annex J中标记为“公共扩展”。

基本介绍

  • 中文名:asm
  • 外文名:asm
  • 释义:C++内嵌彙编
  • 概述:asm是C++中的一个关键字
  • 详述:能写在任何C++合法语句中

关键字

虽然asm并不是C的标準关键字(C11标準未加入正文,仅在Annex J中标记为“公共扩展”),但是大多数C实现都将其视为一个关键字。
asm是C++标準关键字,但是标準没有规定其详细用法。相应的用法为实现定义。

详述

下面介绍Visual C++中的asm关键字用法。
__asm关键字启动内联彙编并且能写在任何C++合法语句之处。它不能单独出现,必须接彙编指令、一组被大括弧包含的指令或一对空括弧。术语“__asm 块”在这里是任意一个指令或一组指令无论是否在括弧内。
Visual Studio 2015起始页Visual Studio 2015起始页
以下代码片段是在括弧内的一个简单的__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块,嵌套对变数作用域也没有效果。

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com