易码技术论坛

 找回密码
 加入易码
搜索
楼主: yan

[工具] 编译器Y2.26最终版 08/5/10更新

[复制链接]
发表于 2007-6-10 16:48:22 | 显示全部楼层
报告一个BUG:

条件编译#ifdef在编译器中不起作用,请检查一下是不是这样。

前两天出现奇怪bug,改了我机子的根目录,所有文件丢失,剩余空间为0,结果我要格机子,不知道是不是机子的问题。
发表于 2007-6-11 06:44:05 | 显示全部楼层
支持哦 !!1
发表于 2007-6-11 09:00:59 | 显示全部楼层
我的程序
if.....
else if.....
else if.....
...
ClearScreen();
else if多了会报错...说未定义
删掉else全用if后则说ClearScreen();未定义
是不能这样用吗??
我的是E400(TC800 1.6内核)
发表于 2007-6-11 18:07:51 | 显示全部楼层
我用的NC2600C编译简索里面取系统时间的代码时出现问题
我在程序中未使用变量C但编译是却提示变量未定义,
当我定义后又说系统不支持getchar函数
用Y2.12时也出现过
 楼主| 发表于 2007-6-16 18:48:18 | 显示全部楼层
引用第640楼杰出威风2007-06-10 16:14发表的“”:
在NC3000的51MB内核中使用,拼音“an”打下去有问题,没有任何字出现给选择。
其他内核没有试过,不是到是不是普遍问题。
没有问题啊。
 楼主| 发表于 2007-6-16 18:50:44 | 显示全部楼层
引用第641楼绿鸟2007-06-10 16:48发表的“”:
报告一个BUG:

条件编译#ifdef在编译器中不起作用,请检查一下是不是这样。

前两天出现奇怪bug,改了我机子的根目录,所有文件丢失,剩余空间为0,结果我要格机子,不知道是不是机子的问题。
注意:编译器不支持全角字符。#是全角字符。
 楼主| 发表于 2007-6-16 18:52:01 | 显示全部楼层
643和644楼的,请把源码贴出来,否则我无法判断是不是编译器的问题。
 楼主| 发表于 2007-6-16 18:56:08 | 显示全部楼层
新增加了几个编译命令,以下是帮助->语法->预处理命令中的内容:
*#loaddata,初始化内存。格式是:
格式1:#loaddata 全局变量或数字=数字或字符串;
  如:
  int a;
  char s[20];
  #loaddata a=-3;
  #loaddata s="Hello World!";
  #loaddata 0x4000=1;//用数字做地址时(比如这里的0x4000,赋值的数字(比如这里的1)不能超过255)
格式2:#loaddata 全局变量或数字={数字或字符串,数字或字符串,.....};
  如:
  int s[20];
  #loaddata s={-1,2000,30,50,6000};
  #loaddata 0x4000={1,2,3,6};//用数字做地址时(比如这里的0x4000,赋值的数字(比如这里的1)不能超过255)
  char r[10][10];
  #loaddata r={"TC800","NC3000","PC2000"};
格式3:#loaddata 全局变量或数字=load(路径,数字1,数字2);这里的数字1表示文件的起点,数字2表示读取的长度。其中数字1和数字2可以缺省。
  如:
  char pic[1600];
  #loaddata pic=load("/LavaData/pic.dat");//会将pic.dat的所有内容载入到pic所指的内存中,缺省了数字1和数字2。
  #loaddata pic=load("/d.dat",16);//会将pic.dat偏移16字节后的所有内容载入到pic所指的内存中,缺省了数字2。
  #loaddata pic=load("/d.dat",16,10);//会将pic.dat偏移16字节后的10字节内容载入到pic所指的内存中。
  #loaddata 0x4000=load("/b.dat");
使用该命令可以使内存充分利用和加快编译速度。可以用于载入图片等。
*注意:
1.该命令可以出现在程序的任何地方。
2.只能初始化全局变量或数字,对局部变量使用该命令会报错。也不能这样写:
  int s[10];
  #loaddata s[0]=1;
  #loaddata s+1={1,2,3};
  以上两种格式都是错误的。
*#code:功能是直接写入虚拟代码。格式是:#code{~};。如:
#code{0x00};
#code{10,20,30,20};
#code{"Hello World!"};
#code{"sdf",1,3,4};
code后一定要跟上一对大括号和分号,里面是要写入的虚拟代码,以逗号隔开。该命令再一定程度上扩展了编译器的功能。要实现编译器无法实现的功能时,可以试试这个命令。这种格式有点象变量初始化。
*#start:设置变量空间地址。编译器在编译程序时,会为每个变量分配一个地址,对变量的操作其实是对地址的操作。众所周知,LavaX的变量空间地址是从0x2000开始的,然后向上生长。用户不能将某个变量与一个地址关联。该命令可以轻易实现这个功能,而不用其他操作(如通过指针等)实现。格式是:#start 数字。如:
#start 0x19c0
char screenbuf[1600];
int a=2;
char b;
......
编译器编译时,会将screenbuf关联到0x19c0上,而a则关联到0x19c0+1600上,依此类推。该命令可以用于需要比较特殊的内存的地址。比如系统定义的特殊内存或io口等。注意该命令容易引起无法跨平台,请适当使用。最好将该命令放在函数外部。
*#unstart:返回当前地址空间。该命令配合#start使用,必须与#start成对出现,并且不能嵌套使用!编译器在遇到#start命令时,会将当前地址空间备份起来并切换到新的地址空间中。当定义完变量后需要恢复到当前空间中,可以使用#unstart命令,该命令会将备份恢复到当前地址空间,实现切换功能。格式是#unstart。如:
#start 0x6
char screenlight;
#unstart
int a=1;
定义在#start与#unstart命令内的变量和全局变量一样可以在定义时初始化。最好将该命令放在函数外部。
#skip:跳过地址空间。因为相邻的变量的地址是相邻的,如:
int a;
long b;
假如变量a的地址是0x2000,那么变量b的地址是0x2002(因为变量a占用2个字节的空间)。
有时不需要连续的地址,则可以使用#skip跳过该地址而不与任何变量关联。格式是:#skip 数字。如:
int a;
#skip 0x10
long b;
假如变量a的地址是0x2000,那么变量b的地址是0x2002+0x10了。
 楼主| 发表于 2007-6-16 19:00:00 | 显示全部楼层
修改了编辑系统中的附加菜单,如图1。按帮助进入该菜单。
增加了对检索的编辑功能,如图2。
增加了NC3000.y和NC2600.y两个库文件。主要以嵌入汇编为主,如调用系统中断等。

图1

图1

图2

图2
发表于 2007-6-16 20:47:45 | 显示全部楼层
又更新了,太强了!总感觉2.13没2.12好用,本来想说一下的,现在看来没必要了。
 楼主| 发表于 2007-6-16 20:53:22 | 显示全部楼层
2.13没2.12好用?
为什么?
发表于 2007-6-16 21:04:16 | 显示全部楼层
从我编写的小程序的编译通过率来看的,以前用2.12时几乎时编一个通过一个,但用2.13却没了这种成就感,编写的程序大部分都通不过。这可能是我个人原因吧!
发表于 2007-6-16 21:06:27 | 显示全部楼层
编译器2.14自动安装包里的dat文件有错误,下载一小部分时hotlink提示有错误,然后自动停止下载。
 楼主| 发表于 2007-6-16 21:10:16 | 显示全部楼层
哦,以后都加强了编译器的分析能力。只有严格按照语法格式写才可以编译通过,以免造成通过了的程序部分无法运行。
如果程序无法通过,可以贴出代码,帮你分析。
 楼主| 发表于 2007-6-16 21:23:17 | 显示全部楼层
可以传输啊,我用ftplink和星际驿站都可以传输的。
看看是不是其他原因?
发表于 2007-6-16 21:38:40 | 显示全部楼层
支持一下!!!
辛苦了~
发表于 2007-6-16 21:45:09 | 显示全部楼层
建议不要使用根目录充当临时缓存的目录,不然生成的僵尸无法清除。(我的机子根目录已经惨不忍睹了)
还有我那个在2.13版确实无法起左右,并不是我输入全角字符的问题。
发表于 2007-6-16 22:25:31 | 显示全部楼层
又更新了,支持一上
发表于 2007-6-16 23:36:14 | 显示全部楼层
更新了,顶!!!
 楼主| 发表于 2007-6-17 00:00:16 | 显示全部楼层
引用第657楼绿鸟2007-06-16 21:45发表的“”:
建议不要使用根目录充当临时缓存的目录,不然生成的僵尸无法清除。(我的机子根目录已经惨不忍睹了)
还有我那个在2.13版确实无法起左右,并不是我输入全角字符的问题。
哦,我看看。
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-5-14 20:03 , Processed in 0.029288 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表