asm

资料百科

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 块"在这里是任意一个指令或一组指令无论是否在括号内。

  以下代码片段是在括号内的一个简单的__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 __a阿如胶只sm mov dx, 0xD007 __asm out al, dx

  以上三个的例子产生相同的代码,但是第一种风格360百科(把__asm块用括号括起来)有一验毛乐从故沿良些优势。括号可以清晰的将C或C++代码和汇编代码分开,并且避免了不必要的重复__asm关键字。括号也能避免模糊性。如果你想在__asm块的同一行放置冲已一个C或C++语句清困补换小乱,你必须将块用括号括起来。没虽迅简个道战浓有括号,编译器不能区分汇编代码在哪里停止以及C或C++代码在哪里开始。最后,因为汽镇编触历兴在括号的文字有和原始MASM一样的格式,你能轻松的从一个已有的MASM源文件里剪切和黏贴文字到文件来。

  不同于C和C++的括号,在Visual Studio中,包含__asm块的括号对变量的作用域并没有效果。你也能嵌套__asm块,嵌套对变量作用域解乙信再伯也没有效果。

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

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

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