www.pudn.com > c++_asm混合.rar > asmlearn1.cpp
// asmlearn1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
using namespace std;
#include "testh2inc.h"
extern "C" int __stdcall Test1(int val);
extern "C" char g_fileName[]; //变量声明时也要用extern "C"
extern "C" char g_pfileName[]; //label 指示的标识符不能指定指针
//extern "C" *char g_fileName; //本句与上句不同,
//上边的g_fileName代表串本身的地址,而本句中的g_fileName表示一个变量,他的内容是串的地址,
extern "C" H2INC2 testh2inc2;
extern "C" g_Version;
extern "C" char g_Data[];
extern "C" char g_Time[];
extern "C" g_Cpu;
//extern "C" char g_Environ[];
extern "C" char g_Interface[];
extern "C" g_Line;
int power2( int num, int power );
char * TestInlineAsm(int i,char *p,int k);
//声明一个共享段
#pragma section("myShareData",read,write,shared)
//在一个段内声明一个变量
__declspec(allocate("myShareData")) int g_TestVal = 0; //这条语句在VC6.0下有问题
//或者
/*
#pragma data_seg("shared")
HHOOK g_hProc = NULL; // 窗口过程钩子句柄
HHOOK g_hKey = NULL; // 键盘钩子句柄
HWND g_hRich = NULL; // 文本框句柄
#pragma data_seg()
#pragma comment(linker, "/section:shared,rws")
*/
#include
string testReturnVal(COMPLEXF_SLIB &f1)
{
//return COMPLEXF_SLIB(3,4,7,8);
COMPLEXF_SLIB f2;
f2.real=2.3;
f2.image=5.6;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
f2.real = f1.real * f2.image;
f2.image = f2.image + f2.real * f1.real;
// f2.test3 =f1.image+f1.real;
// return f2;
return string ("asldkj");
}
int _tmain(int argc, _TCHAR* argv[])
{
/*
*
测试进程间共享内存
*/
//while(1)
//{
// Sleep(200);
// cout<< g_TestVal++ << endl;
//}
//__m128d a=3.5;
//__m128d b=6.8;
//__m128d ret=_mm_add_sd(a, b);
//complexf4(23,16);
//complexf5(23,16);
//cout<< (f4*f5) << endl;
//float f2=23.32;
//complexf1(f2,23.4);
//complexf3(23.4,f2);
//cout<< (f1*f3) << endl;
//cout<< sin(f2) << endl;
//return 1;
cout<< "long double=" << sizeof(long double) ;
COMPLEXF_SLIB complex1[400];
cout<< testReturnVal(complex1[3]) << endl;
for(int k = 0; k< 400; k++)
{
complex1[k].image=0.345;
complex1[k].real=0.789;
}
cout<< TestFloat1(1.2, 2.3, 3.4, complex1, 5);
return 1;
cout<