内嵌汇编

Inline Assembler
内嵌汇编

以下原文均由微软解释

汇编有多种用途,比如改进程序运行速度,减少内存,控制硬件等。内嵌汇编机制使程序员能够在C 或C++ 源程序中直接嵌入汇编指令,不需要另外的汇编编译和链接步骤。内嵌汇编的编译由C 编译器实现,所以不必使用其它的汇编编译器。
注意:使用内嵌汇编后,程序不能保证在所有硬件平台上正常使用。内嵌汇编不包括MASM 所有的宏与数据指令。为跨平台程序编写的内嵌汇编应该为每个平台编写代码。

因为内嵌汇编不需要外部汇编编译器,所以使用起来更方便些。内嵌汇编代码可以使用C 或C++ 的变量和函数命名,更容易与程序整合到一起。内嵌汇编代码可以与C 或C++ 语句混合使用,解决高级语言不容易实现的工作更为容易。

__asm 关键字定义汇编语句,它可以出现在任何C 或C++ 语句合法的位置。关键字后面必须跟汇编指令或一对花括号。语法:
__asm mov ebp, esp
__asm {}
__asm {
      mov ebp, esp
      }
__asm mov ebp, esp __asm sub esp, 0X50
不使用花括号,表示__asm 关键字后面是一条汇编语句,使用花括号,表示花括号里面每一行表示一条汇编语句。为向上兼容,_asm 关键字与__asm 同意。__asm 关键字是一个语句分隔符,可以将几条语句放在同一行,如上所示。与标准C 或C++ 不同的是,__asm 关键字不影响变量使用范围,关键字可以嵌套使用,嵌套后也不影响变量使用范围。

使用内嵌汇编主要有几个目的:
1. 编写特定函数
2. 优化时间敏感的代码
3. 直接硬件设备访问
4. 为无保护(Naked 函数, 如void __declspec(naked) main())编译进出堆栈代码

注意:Visual C++ 使用__asm 关键字,标准C++ 使用的关键字是asm。在VC++ 中使用asm 关键字编译器不会产生错误,但也不会产生任何有意义的实际代码。

在__asm 关键字中使用汇编语言
内嵌汇编与其它汇编语言使用相似,如可以使用MASM 的合法表达式。这里主要讨论其不同之处。
指令集:VC++ 编译器支持直至Pentium 4 和AMD Athlon 处理器的所有指令助记符。可以使用_emit Pseudoinstruction 创建其它指定的处理器指令集。
表达式:内嵌汇编代码中可以使用MASM 中所有结果为单一值或单一地址的表达式。
伪指令和操作符:内嵌汇
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值