12年1个月前IP:广西
732750
9楼
本机C编译器说明:

支持全局变量、局部变量、函数、头文件、字符串替换命令.


1.支持数据类型.

signed可以省略,会默认为有符号数.
char占1个字节,int占2个字节,long int占4个字节, 指针占2个字节.

signed char
signed int
signed long int
unsigned char
unsigned int
unsigned long int

signed char*
signed int*
signed long int*
unsigned char*
unsigned int*
unsigned long int*

signed char 一维数组
signed int 一维数组
signed long int 一维数组
unsigned char 一维数组
unsigned int 一维数组
unsigned long int 一维数组

16进制常量
10进制常量
8进制常量
字符常量


变量的物理地址定义方式.
@0xfffe char a,b;@
意思是修改当前变量的分配地址为0xfffe,然后变量a的地址就是0xfffe,b的地址是0xffff, 然后遇到第2个"@"分配地址会恢复,否则会一直加下去....




2.支持函数类型.
signed可以省略,会默认为有符号数.
char返回1个字节,int返回2个字节,long int返回4个字节, 指针返回2个字节.

void

signed char
signed int
signed long int
unsigned char
unsigned int
unsigned long int

signed char*
signed int*
signed long int*
unsigned char*
unsigned int*
unsigned long int*


函数分页定义方式.
void x()rom0 on
{
}
函数括号末尾加上"rom0"的意思是编译的时候把这个函数放在rom第0页,一页64KB,最多可以支持255页(16MB的ROM), 因为这个CPU程序计数器16位只能寻址64KB,也就是这里一个函数最大64KB, 怎么实现不同函数的页间调用。。这个是我觉得做得比较得意的地方~~ 后面有空讲.
后面那个"on"的意思就是这个函数是页间共享, 这样其他页的函数就可以调用本函数, 如果不加 "on" 其他页的函数不能调用本函数, 加 "on" 比不加 "on" 效率低.

如果不加 "rom0", 这个函数默认放在ROM第0页.




3.支持控制语句.

if - else
if - else if - else if - else if ......
while
do - while
for
goto
break
continue
return
rom_run
特殊控制语句 "rom_run" .
本机有两组ROM, 不管CPU当前执行的程序在哪个ROM,只要执行到rom_run后就会切换到另一组ROM的首地址开始运行, 而且还可以通过 _R1(CPU的R1寄存器) 传递一个数值给另一组ROM.



4.支持运算符(表达式里的运算符严格按照C优先级处理).

sizeof
()
[]
+
-
*
/
%
&
|
~
^
!
>
<
>=
<=
==
!=
++
--
&&
||
>>
<<
+=
-=
*=
/=
%=
&=
|=
^=
<<=
>>=
?:



5.可以表达式插入操作的CPU部件和指令:

_ACC
_R1
_R2
_R3
_C
_Z
_BIT0
_BIT1
_BIT2
_BIT3
_BIT4
_BIT5
_RAM
_NOP






本编译器的局部变量分配方法:

函数之间有调用关系分配地址不同,函数之间没有调用关系,分配地址相同.

下面这种调用关系的程序内存总占用约为1024字节.
void a()
{
  char x[1024];
}

void b()
{
  char x[1024];
}

main()
{
  a();
  b();
}


而下面这种调用关系的程序内存总占用约为2048字节.
void a()
{
  char x[1024];
}

void b()
{
  char x[1024];
  a();
}

main()
{
  a();
  b();
}
评论
文号 / 732750

千古风流
名片发私信
学术分 4
总主题 71 帖总回复 1168 楼拥有证书:学者 机友 笔友
注册于 2011/08/12 17:13:20最后登录 2022/12/22 11:43:34
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的