在c ++中经常使用这种表达式
#ifdef __BORLANDC__
#pragma argsused
#endif
并且还给出了c ++中汇编程序代码的代码
#ifdef __BORLANDC__
#pragma argsused
#endif
#include <iostream>
using namespace std;
int main( int argc, char * argv[] )
{
int Number1, Number2, Result;
__asm
{
MOV Number1, 248 // Initialize Number1
MOV Number2, 405 // Initialize Number2
MOV EAX, Number1 // Put the value of Number1 in the EAX register
ADD EAX, Number2 // Add the value of Number2 to the content of EAX
MOV Result, EAX // Put the content of EAX into Result
} // That's it
cout << "Number1 = " << Number1 << endl;
cout << "Number2 = " << Number2 << endl;
cout << "\nAfter adding Number1 to Number2," << endl;
cout << "Result = " << Result << endl;
return 0;
}
我如何检查我的c ++是否有汇编编译器?
答案 0 :(得分:1)
#ifdef
通常用作header guards。这个结构的用法要宽得多,我刚才提到了最基本的一个。至于“汇编程序编译器”,我相信大多数遵循该标准的C ++编译器应该能够处理它。请参阅示例here。
答案 1 :(得分:0)
据我所知,只有Borland编译器能够识别__asm关键字。我不认为有一种标准的方法可以在C或C ++中编写内联汇编
更新:刚刚检查过,结果证明它远非真实。 MS编译器示例:link text
答案 2 :(得分:0)
您必须通过ifdef指令检查编译器名称并阅读有关汇编程序支持的文档。还要检查一个平台,我知道VS C ++不支持64位版本的汇编程序。
答案 3 :(得分:0)
实际上比这更糟糕。大多数C ++实现都有一些方法可以进行程序集插入。但是,这些(显然)不能移植到其他平台,并且根据您使用的说明,甚至可能无法移植到他们 工作的平台可用的每个处理器上。