您好,欢迎光临本网站![请登录][注册会员]  
文件名称: YC1.0 javascript c/c++ 编译器
  所属分类: C++
  开发工具:
  文件大小: 5mb
  下载次数: 0
  上传时间: 2014-06-04
  提 供 者: lab****
 详细说明: 本版中附带了大量源代码。 tinix 微型操作系统源代码(tinix.cpp 作者于渊) lua 5.1.2 源代码 ruby 1.8.6 源代码 basic 源代码 flash4.0 播放器源代码 llinux 0.11 起动部分源代码(其它部分需花不少时间来移植到YC, 有兴趣者可做这个工作) mpeg 解码器源代码(mpg.cpp 作者不详) mpeg 编码器源代码(mpge.cpp 作者不详) 三维游戏引擎源代码(OpenGL)(sword.cpp 作者WWBOSS) 赛车游戏源代码raceX.cpp(作者不详) 中国象棋源代码(作者陶善文) 五子棋源代码(作者不详) 俄罗斯方块源代码(作者不详) 三维台球(OpenGL)源代码(作者不详) 射击、爆炸游戏(OpenGL)源代码(作者不详) UFO游戏源代码(作者不详) …… 这些软件均能用YC09生成执行代码。 在此向这些软件之作者深表谢意。 安装后主目录YC09下的子目录为示例文件, 均可删除。 yc09.exe 包含示例的安装程序 1. 定义代码的位 YC可编译16、32和64位的汇编代码, 可编译32位C/C++与汇编的混合代码。只需用YC而不用其它编程工具就可以开发16、 32、64位的任何软件,如16、32、64位的操作系统(见示例 tinix.cpp, linux011.cpp, setup26.cpp)。 下列预处理命令定义生成代码的位(默认为32位) #define YCBIT 16 #define YCBIT 32 #define YCBIT 64 2. 定义代码的起始位置 #define YCORG 7c00h #define YCORG 0x7c00 该功能主要用于操作系统的开发,其它代码无须定义。 注: 定义YCORG后, 生成的代码是无格式二进制执行代码, 执行入口位于文件的起始处。 请看示例: txboot.cpp 3. 代码优化 默认是优化的,若不要优化(NO Optimize)则用定义 #define YCNOO 不用变量优化的定义(NO Variable): #define YCNOV 4. 代码格式 #define YCEXP 若同时定义了YCORG, 生成之代码有一个简单的可变长头部。 否则生成不能自己执行而只能被其它程序调用的代码。 5. 编译错误提示级别 #define YCLEV 1 #define YCLEV 2 #define YCLEV 3 #define YCLEV 4 #define YCLEV 5 (默认为1) 6. 头文件 YC自动包含头文件 yca.h, 因此一般不需要诸于#include “stdio.h”之类的预处理。若要开发一些使用 COM 接口的软件, 可定义: #define YCB 它将自动包含头文件 ycb.h yca.h已经编译并存于文件 yc.ah, yca.h与ycb.h一起编译并存于文件 yc.bh 用下面定义可去掉默认的头文件(NO Head) #define YCNOH 定义YCORG,也可以去掉默认包含yca.h 7. 资源泄漏检测 下面定义可检测 malloc new 等容易产生资源泄漏的语句 #define YCTEST 8. 生成不用YC任何文件的执行代码 #define YCSELF 9. 执行代码图标 #define YCICON game.ico 10. 使预处理命令 #line 失效 #define YCLINE 11. 生成虚拟机代码 #define YCVM 生成字节代码,用虚拟机解释执行, 速度一般慢数十倍 12. 定义函数的位置 #pragma org(497) #pragma org(0x1000) 它只对紧接其后的函数起作用 13. 定义函数和全局变量的对齐 #pragma align(16) 它只对紧接其后的函数或全局变量起作用 14. 汇编函数的定义 YC除了象其它编译器一样可在C/C++函数中内嵌汇编代码外,还增加了一个将整个函数都成为汇编代码的语法: 在函数的最前面加上asm关键字 如: asm void in_byte(int port) { mov edx, [esp + 4] xor eax, eax in al, dx ret } 通过这个语法,完全不用汇编器就可以开发操作系统。 因此, 汇编器是一个多余的工具,在YC中, 它的语法与C/C++语法完全统一了。 15. 动态链结库(DLL)自动调入语法 auto("kernel32.dll") { #include "wincon.h" } 16. 文件自动读入数组语法 char mbuf[sizeof] = auto; static int nbuf[30000] = auto; 数组只能被定义为全局或局部静态的,类型可任意。大小必须不小于被读文件长度。 语法sizeof表示文件yc.gif的长度, auto表示自动读文件yc.gif,第一个语句的意思是创建大小为文件yc.gif长度的全局数组mbuf[], 并将yc.gif读入mbuf[]。第二个语句的意思是创建大小为30000*4的数组nbuf[],并将yc.gif读入nbuf[]。 该语法将被读文件写入执行代码中,故执行代码不再需要被读文件, 被读文件只在编译时需要。 17. 编译时检查文件是否存在 #if defined 18. 执行源代码 int YC_RunCppCode(char *srcbuf,int srclen,int argc,char **argv);返回值=0, 执行成功。否则执行有错误。 被执行的代码可以在文件中也可以在内存中。 例: void main() { char *mcode = "void main(int ac,char *av) { printf(/"//nHello! %d, %s//n/", ac, av); }"; YC_RunCppCode(mcode, strlen(mcode), 2009, (char**)"abc"); } void main() { YC_RunCppCode("ycofn.c", 0, 2009, (char**)"abc"); } 注: (srcbuf,srclen)中也可以不是源代码而是经YC编译后的执行代码。 19. 动态源代码库 void *YC_LoadCppCode(char *srcbuf,int srclen, void *pObj); void YC_FreeCppCode(void *pCode); 这两个函数类似于WIN32中的LoadLibrary和FreeLibrary, 但比它们强得多。YC_LoadCppCode编译(srcbuf,srclen)中的源代码,将编译后的结果驻留内存,并执行源代码中的main函数, 同时将参数pObj传给它, 因此main的格式应为: void mexit(){...} int main(void **ppObj) { *ppObj = ...; return (int)mexit; } 在main函数中, 可以将源代码中的任何函数或函数数组之地址放入ppObj,这样便可以调用动态源代码库中的函数了。 YC_FreeCppCode用来释放驻留代码, 同时执行代码库中的自定义清理函数(如果main无返回值或返回值为0, 则不执行清理函数)。 注: (srcbuf,srclen)中也可以不是源代码而是经YC编译后的执行代码。请看示例: regex.cpp 20. 编译函数 int YC_CompileCpp(char **pExebuf,char *srcbuf,int srclen,char *cppfile);请看示例: ycc.cpp ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: YC10 javascript c/c++ 编译器
 输入关键字,在本站1000多万海量源码库中尽情搜索: