- 注册时间
- 2006-8-30
- 最后登录
- 1970-1-1
|
发表于 2007-2-16 23:22:40
|
显示全部楼层
.y为yan编译器的链接库系统的文件,这种文件是已经编译好了的文件,无需再次编译。
下面是yan写的链接库生成方法
一,先将源程序编译成lav文件。
比如我要把:
int sqrt(long M)
{int N, i;
long tmp,ttp;
if(M==0)return(0);
N=0;tmp=M>>30;M=M<<2;
if(tmp>1){N++;tmp=tmp-N;}
for(i=15;i>0;i--)
{N=N<<1;tmp=tmp<<2;tmp=tmp+(-(M<0))*2+((M&0x7fffffff)>>30);
ttp=N; ttp=(ttp<<1)+1; M=M<<2;
if(tmp>=ttp){tmp=tmp-ttp;N++;}
}
return N;
}
这个函数做成y文件,那么得先把它编译成lav文件。在编译器中编译(在上面的代码上添加一个main函数而已):
int sqrt(long M)
{int N, i;
long tmp,ttp;
if(M==0)return(0);
N=0;tmp=M>>30;M=M<<2;
if(tmp>1){N++;tmp=tmp-N;}
for(i=15;i>0;i--)
{N=N<<1;tmp=tmp<<2;tmp=tmp+(-(M<0))*2+((M&0x7fffffff)>>30);
ttp=N; ttp=(ttp<<1)+1; M=M<<2;
if(tmp>=ttp){tmp=tmp-ttp;N++;}
}
return N;
}
void main()
{
}
这时生成lav文件了(假设文件在/LAVA中)。注意:要做成y文件的函数不能使用全局变量!
二,制作接口和说明文件。
在/文本文件中,创建接口.txt,说明.txt两个文件,接口.txt是用来通知生成器的文件,否则生成器无法知道哪个标识符来调用此函数。该文件的格式是:
函数名 是否有返回值(0:表示没有,1:表示有,2:表示不链接(即:即使#include包含这个文件也无法调用这个函数))(它们之间用空格隔开)
比如:
sqrt 1
写好后保存。说明.txt是说明该y文件包含的接口函数及其使用方法。比如:
原型:long sqrt(long n);
功能:计算n的开根号值
举例:
#include "sqrt.y"
void main()
{SetScreen(0);
printf("%d的开根号是:%d",50,sqrt(50));
getchar();
}
当然也可以按照自己的意愿写,比如加上自己的署名等等。做好后保存。
三,生成y文件。
运行链接库生成器,选择lav文件,即可在/DllData目录里生成相应的y文件。 |
|