学习Windows 编程,从MSDN翻译开始--2
来源:互联网 发布:淘宝客服提醒买家付款 编辑:程序博客网 时间:2024/05/16 11:08
__asm关键字能够启动汇编器,可以在任意合法的C或C++语言中加入汇编语言。这个关键字不能单独出现,必须在后面跟上一句汇编指令或者在大括号中添加一组汇编指令,当然大括号中也可以为空。
Visual C++支持标准C++的asm关键字,但是这局限于一个事实,就是编译器不会为该关键字生成任何汇编指令。注意,asm关键字和__asm不是同一个东西。如果你想嵌入汇编指令,那么请使用__asm。使用方法如下:
如果你在使用__asm的时候不加大括号,那么编译器会把当前行剩余的内容当做汇编指令块。考虑到兼容性,_asm和__asm的含义相同。
在Visual C++2005之前,指令 __asm int 3 ,当编译参数中有/clr,即使用公共语言运行库时,编译器不会生成本地代码,编译器会将该指令转换成CLR中同等的指令。但是从Visual C++2005开始,__asm int 3 指令就会生成本地代码,这时如果你打算在代码中添加一个断点并且希望编译器将断点代码编译成MSIL,那么请使用__debugbreak。你也可以将代码写成这样:
__asm的大括号不会对其他的变量的作用域产生影响。
你还可以将__asm汇编语言块定义成C语言的宏。宏定义为添加汇编语言块提供了一种便捷的方式。但是请注意:宏定义在展开的时候会成为一行代码(逻辑行)。
为了能够让编译器正确的识别你嵌入的汇编代码,请遵循以下的规则:
1. 将你的汇编语言写在大括号里
2. 在每一条汇编指令的前面添加__asm关键字
3. 在添加的注释的时候,请使用旧式注释/* comment */
比如说如下:
乍一看上去,你一定认为大括号里面的__asm是多余的。但是,它们的确是有必要的,因为这个宏会展开为如下这样:
所以说,你必须在每句汇编指令前添加关键字来将它们区别开。宏定义也可以使用参数,但是不能将这种宏定义用作表达式。
注意:在fastcall调用方式的函数中使用这种宏定义可能会产生不可预料的结果,所以不要不分青红皂白的就去使用。
- 学习Windows 编程,从MSDN翻译开始--2
- 学习Windows 编程,从MSDN翻译开始--1
- 从零开始,学习windows编程(4)--从libc.lib开始
- 从今天开始学习编程.
- 编程,从哪个开始学习 ??
- [翻译]NDK之一:开始学习NDK编程
- 熬之滴水穿石:一切从windows编程开始(2)
- 开始学习《windows核心编程》
- 开始利用CSDN做学习笔记,从windows 游戏编程大师技巧和3D游戏编程大师开始
- Windows的理解-开始学习Windows编程
- Microsoft Windows 坐标空间 (翻译自MSDN)
- 开始进行 64 位 Windows 系统编程之前需要了解的所有信息 -- MSDN
- 输入法编程指南(根据msdn翻译)
- 输入法编程指南(根据msdn翻译)
- 输入法编程指南(根据msdn翻译)
- 学习编程应该从哪个开始学
- 学习编程应该先从那里开始?
- linux编程学习4-从HelloWorld开始
- XNA还是Silverlight : 哪种才是适合我的?
- Numerical Bases
- 一个漫长的程序人生路程,如何突破5000元大关?几年前的2-3线城市的参考,现在未必
- 11月19日 循环语句
- 网络流题目,准备练习网络流了~
- 学习Windows 编程,从MSDN翻译开始--2
- shell中浮点运算方式
- 通用权限管理软件交易成功几套的经验分享,其实你也可以卖软件赚小钱
- 关于易经和决定的一些感想
- 这几年养成的几个比较好的工作习惯
- 我们的辛苦劳动为什么不值钱?在美国IBM投资公司实习3个月,每天美金450元
- 面向对象与电路模型
- 2010年
- Boolean Operations