shenjack
1b2371b99e
new file: .gitattributes new file: Sec.exe new file: Sec.ini new file: Sec1.exe new file: UpLog.txt new file: "code/3D\346\265\213\350\257\225.exe" new file: "code/3D\346\265\213\350\257\225.sec" new file: code/HIF.sec new file: code/Intermsg.sec new file: code/OPENGL.sec new file: code/SpeechInfo.sec
418 lines
15 KiB
Plaintext
418 lines
15 KiB
Plaintext
2022年4月21日开始计划写更新日志,并准备正式发布1.0版本。
|
||
编译器从开始筹划到现在已经将近十年了,由于没有规划具体工作。
|
||
本人没有计算机基础,也没系统的学过编程。所以只能是一边研究编程,
|
||
一边构思编程代码的框架的思路。以下是这些年来编译器改进过程回顾。
|
||
|
||
2013年开始研究Windows程序编译原理,可执行文件的结构。
|
||
|
||
2014年编译器框架初步成型,能够编译“hollo world”和简单的窗口程序。
|
||
|
||
2016年完成代码语法高亮编辑器和窗体设计器的改进,并实现资源图标等。
|
||
|
||
2018年优化数组的读写操作和自身加减操作,以及变量和内存指针的处理。
|
||
|
||
2019年才开始实现switch判断语句,增加了菜单编辑器和机器语言指令功能。
|
||
|
||
2020年重新规划数据变量的中英文名称,改进小数和日期的处理。
|
||
|
||
2021年修正窗体设计器报错退出问题,并深入研究汇编指令,优化机器语言。
|
||
|
||
2022年开始优化局部变量的申请和使用,并取消之前的内部变量方案。
|
||
尽可能的减少内存操作,优化对寄存器的使用。
|
||
增加了传址、索引和子类等语法,实现子类代码的定义和处理。
|
||
增加了数据表结构类型和数据库的批量读取。
|
||
数组的长度 .len 取代下标,序号只能从0开始。
|
||
反汇编排查错误:数组和数据表乘以结构长度取错。
|
||
|
||
2022年4月23日更新:
|
||
修正常量和类型内变量不能连续申请的问题。
|
||
修正字节组类型不能读写成员问题。
|
||
修正dll编译优化的兼容性。
|
||
修正非数组使用负数下标读写数据问题。
|
||
增加右键菜单插入常用中文编程词汇。
|
||
优化局部文本和小数变量的相关操作。
|
||
增加文本变量可以用加号连接字符串。
|
||
|
||
2022年4月24日更新:
|
||
修正传送参数变量为文本时与局部文本的判断。
|
||
增加子类的销毁处理,子类可以是变量或数组成员。
|
||
增加 .len的中文 .长度 .cols = .列数 .rows = .行数
|
||
增加临时浮点数字的运算,#开头为浮点数字。
|
||
优化小数和浮点变量的运算和提交参数过程。
|
||
优化局部变量的自加自减和增加减少运算处理。
|
||
反汇编排查错误:局部变量自增加数字和变量表达式的区分
|
||
优化局部小数变量的读写运算等相关操作。
|
||
反汇编研究C语言对双精度小数和64位整数的处理
|
||
取消正整数类型,增加局部浮点(双精度)类型
|
||
|
||
2022年4月25日更新:
|
||
实现整数、小数和浮点类型的相互转换和运算
|
||
数组内(数据表)小数、浮点和大数的处理
|
||
循环数组语句更新循环写入功能
|
||
增加循环字符串数据时,按字符长度计算
|
||
增加标记符号可以用@,(:和;太难区分)
|
||
|
||
2022年4月26日更新:
|
||
优化多个常量组合时的计算处理。
|
||
修正局部变量自增加或减少数字时编译的错误。
|
||
支持库和实例目录改为lib和code,方便实时更新。
|
||
程序正式上传在线更新列表,通过安装器就可自动安装。
|
||
|
||
2022年4月27日更新:
|
||
编译器开始兼容C系列各种语法,复制过来的C代码,尽量做到不改动就能直接编译。
|
||
增加了VC、C#等常用数据类型的兼容写法,数组变量兼容小括号和中括号写法。
|
||
修正局部浮点变量直接赋值时的精度计算,以及子类和数组内浮点变量的赋值运算。
|
||
修正数组内(数据表)和新建子类浮点型变量以及子类所有变量赋值错误的问题。
|
||
|
||
2022年4月28日更新:
|
||
优化变量初始赋值的方法,全局变量代码段外只能赋值数值。局部变量则可以用代码公式。
|
||
改进小数和浮点的赋值运算和提交数据的判断,给小数变量赋值时,自动转换成小数。
|
||
优化判断关键词的摘取,只在判断语句和循环语句中读取关系比较。
|
||
增加了小数和浮点的比较判断,优化了数组和子类内小数的赋值过程。
|
||
增加了+=、-=、*=、/=、|=、&=、%=、^=、等语法对各种变量的支持。
|
||
|
||
2022年4月29日更新:
|
||
修正了关系运算(判断大小)时,第二条件为数字时,整数和小数的区分。
|
||
修正了判断大小时,第二条件为变量或表达式,小数和浮点的区分。
|
||
增加条件判断语句中可以使用多重括号,loop改为兼容的do写法。
|
||
|
||
2022年4月29日更新:
|
||
改进控件属性需要双击修改,解决修改错乱导致崩溃的问题。
|
||
修正“画”控件时宽度或高度为负数时程序崩溃的问题。
|
||
增加了switch判断语句可以用逗号分割多个条件,以及~符号指定范围。
|
||
|
||
2022年5月6日更新:
|
||
优化with列举语句的读写过程,之前的取独立地址,改为首地址加偏移量。
|
||
列举语句兼容类型、子类(局部和全局)、数据表等,首地址用EDI存储。
|
||
统一了给EDI或ESI的地址赋值算法,包含ESI/EDI加偏移,或者ESI/EDI加ECX,或者ESI/EDI加偏移加ECX
|
||
数组或者数据表取值算法与之前ESI/EDI加偏移、EAX、内存地址算法兼容
|
||
实现EBP/ESI/EDI加偏移/ECX与数字或者运算结果相加、相减,以及自加自减的算法统一。
|
||
优化对EBP/ESI/EDI加ECX的地址进行赋值或加减运算时,栈出到ECX和EDI的恰当时机。
|
||
修正列举数据表变量时寄存器用错的重大问题,修正判断m ~ n指定范围不在第一条件无法编译的问题。
|
||
|
||
2022年5月7日更新:
|
||
修正加索引误删获取数据表长度导致的错误,可选字段也可正常使用。
|
||
优化索引和加索引时,数量存入ECX寄存器的方法。
|
||
帮助说明更新至本地路径,网络状况不好时也不影响阅读。
|
||
增加了读取数据表之前,自动把行数清零的功能。
|
||
|
||
2022年5月8日更新:
|
||
增加了“#”加数字语法的特殊用途:数组获取数据之后,可以用#加偏移量,获取该内存地址后面的数据。
|
||
增加了启动SEC编程软件时,检查程序是否需要更新,询问用户需要更新时,自动启动更新程序。
|
||
|
||
2022年5月9日更新:
|
||
对#语法的用途进行扩展:可以使用列举,#数字是获取偏移地址的值,#@数字是获取偏移地址,“.#数字”是对偏移地址进行赋值。
|
||
编程软件增加自动更新模块,在线更新无需更新器,程序运行中也可以完成自我更新。
|
||
|
||
2022年5月10日更新:
|
||
增加日期类型,并与双精度浮点类型通用。未指定日期或浮点类型的日期仍转为整数。
|
||
判断日期类型是否符合,如:13-5、2-32、2022-0-99等错误日期,将不按日期处理。
|
||
日期也是属于数字类型,可参与运算。非日期或浮点类型,是按格林威治时间转换成整数。
|
||
代码中有类似于“a*3-2”,会被解读为a乘3月2号。在-号前面加空格,则会解读为乘3减2
|
||
检查到程序需要更新时,弹出的信息框显示需要更新的文件列表。
|
||
取消检查到文件需要更新就先删除文件。改为下载时检查是自身程序时删除。
|
||
增加列举类型时赋值代码的优化,数值预先写入数据区段,省略代码赋值。
|
||
|
||
2022年5月13日更新:
|
||
修正局部变量不在第一行(先写其它代码,后申请局部变量),导致局部变量无法正常使用的问题。
|
||
循环数组位于文本变量时,每次英文读一字节,中文两字节,直到0字符为止,不再依据长度读取。
|
||
申请变量时检查同名全局变量(包括控件名)是否存在,优先判断是否局部变量和子类变量。
|
||
修正循环代码之后加换行或者空格符号,导致识别不到循环条件的问题。
|
||
调用外部函数时,如果参数为0个,可以不加小括号。
|
||
|
||
2022年5月23日更新:
|
||
增加申请数组时指定长度为固定数组,否则为动态数组(数组只能在全局变量申请)
|
||
固定数组不能进行重置、保留和销毁,性质和文本类似,只是单个成员长度不同。
|
||
“工程文件”和“外观样式”的列表从原来的最右侧,移至左侧。以适应多数人习惯。
|
||
编译代码时指定区段使用数字的全部改为标准化定义,这样修改标准定义也不受影响。
|
||
代码语法开始往BASIC(VB)语法相兼容,使用空格和换行也可以替代其它符号。
|
||
|
||
2022年5月24日更新:
|
||
右键菜单的“插入字符”功能更改为点击左侧列表相应中文字直接插入代码
|
||
可自行调整“inc\风格.txt”里的最后一行内容。
|
||
增加直接“重命名”语法,英文的函数名可直接用中文代替。
|
||
|
||
2022年5月25日更新:
|
||
修复所有全局变量在DLL里的重定向链表,并解决编译优化时重定向链表的偏移地址重新计算问题。
|
||
优化自动更新多个文件压缩包的解压功能,解决多文件无法解压的问题。
|
||
|
||
2022年5月26日更新:
|
||
修复全局文本变量时,实际长度多一字节,导致自定义类型数据错位的问题。
|
||
增加自定义类型申请时,可以在小括号内使用成员名=内容,加逗号分开的形式设置初始值。
|
||
更新文件框结构、目录框结构、执行结构、托盘结构等中文类型,解决托盘不能弹出消息问题。
|
||
|
||
2022年5月28日更新:
|
||
修正退出软件时,保存数据无效的问题。
|
||
窗体设计的外观样式中,“是否可用”改为“是否禁用”。
|
||
增加“消息事件”小程序段,调用它相当于DoEvents
|
||
编译程序处理窗体的核心代码全部改为中文名称和类。
|
||
|
||
2022年5月29日更新:
|
||
增加代码编辑器可以设置字体大小的功能。
|
||
附加的示例代码重新整理,尽量全部中文化。
|
||
添加更多的全中文名称定义的类和常数定义。
|
||
|
||
2022年6月1日更新:
|
||
修正读取小数数字时,误判为时间的错误。
|
||
继续增加的全中文名称定义的类和常数定义。
|
||
新的中文名称定义已更新至说明书对照表。
|
||
|
||
2022年6月8日更新:
|
||
修正控制台开发库的错误,兼容64位系统,优化程序体积;
|
||
增加双击窗体背景,自动加入图片资源并编译显示背景图片。
|
||
增加按条件判断跳转的语法,可在比较语句之后使用。
|
||
其它汇编语法将会陆续更新支持,无需内联汇编,直接写汇编代码。
|
||
|
||
2022年6月16日更新:
|
||
修正某些系统环境下,启动程序出错的问题。
|
||
增加对文本或内存地址“清零”功能(zeros)
|
||
索引功能增加对非标准数组类型数据的查询。
|
||
|
||
2022年8月6日更新:
|
||
增加了设计的菜单项可以隐藏显示
|
||
改进代码块只有一句时可以不写大括号
|
||
改进了文本变量申请以长度为准,末尾可以没0
|
||
改进了设计菜单时,添加的主菜单名可以为空
|
||
|
||
2022年8月13日更新:
|
||
修正了双击打开源码文件报错的问题
|
||
SEC编程正式改名为极语言编程
|
||
增加了部分中文标点的兼容,冒号分号逗号
|
||
|
||
2022年9月10日更新:
|
||
改进了for循环语句的支持多个判断条件;
|
||
改进了源码目录没有图标时,自动加载默认图标
|
||
改进了重新打开其它源码时,清空现有文件列表和数据
|
||
|
||
2022年9月23日更新:
|
||
改进了循环语句支持纯数字和for/do/while的兼容写法
|
||
增加了非赋值参数里使用小数,后面加#号为浮点数
|
||
增加了百分号%可以获取除法运算里的余数
|
||
|
||
2022年9月24日更新:
|
||
增加了&符号取地址指针,跟@符号作用相同,可兼容VC的写法
|
||
使用检索语句在括号后加&,是返回检索的地址,比取序号更简单
|
||
修正了"调用"语法可作为参数,以及给变量赋值返回值的问题
|
||
|
||
2022年9月28日更新:
|
||
增强了内存安全性的处理,空指针指向默认申请的一段内存
|
||
增加了对于窗体使用制表键切换控件和翻译消息的处理
|
||
消息事件从循环改为判断语句,并可返回是否处理了消息
|
||
取消了最后一个内置的库函数,全部由外部处理中文定义
|
||
调整了控制台程序默认包含内核库,窗口程序增加了一些常用库
|
||
|
||
2022年10月13日更新:
|
||
修正了使用十六进制数字不能用小写字母的问题
|
||
增加了0x开头的十六进制数字格式的支持
|
||
增加了0#开头的两个汉字转换为数字的支持
|
||
增加了0$开头的四个英文字符转为数字的支持
|
||
申请局部文本变量忘记指定长度时改为16字节
|
||
申请全局文本变量忘记指定长度时改为1字节
|
||
申请文本变量兼容支持小括号指定长度的语法
|
||
|
||
2022年11月5日更新:
|
||
增加了使用@或者&取API函数指针地址的功能
|
||
修正了传址语句后面不加分号不能编译的问题
|
||
修正返回语句后面加空格导致编译失败的问题
|
||
修正了申请文本变量名称后面不能加空格的问题
|
||
限制了文本变量申请时必须指定缓冲区的长度
|
||
|
||
2022年11月13日更新:
|
||
修正局部整数与小数混合运算时自动转换的问题
|
||
修正整数与小数运算结果向整数变量赋值的问题
|
||
新建DLL函数库时加入返回(1)解决兼容挂载问题
|
||
|
||
2022年11月22日更新:
|
||
增加了文本内容开头加`符号时,自动转码成宽字符
|
||
源码最大容量从65K扩充到16M,解决源码量过大无法编译问题
|
||
小程序片段可以兼容"函数"的叫法, 以前旧代码不影响编译
|
||
优化了插入窗口背景图片的显示函数,去掉了两个复杂结构体
|
||
|
||
2022年11月25日更新:
|
||
修正了无指定长度宽字符文本末尾只有一个0的问题
|
||
编译的核心模块inc文件不显示在菜单,改为内定模块
|
||
新添加模块扩展名修改为c,所有旧源码都会自动调整
|
||
|
||
2022年11月28日更新:
|
||
编译器与设计界面完全分离,可支持第三方IDE
|
||
原版编辑器使用了开放IDE接口,与测试版合并
|
||
CALL调用指令增加了调用数值型地址的支持
|
||
测试版Sec1.exe更新为编译器,可独立运行
|
||
|
||
2022年11月30日更新:
|
||
代码编辑器换回原版,不再提供开放IDE接口
|
||
编辑器增加自动缩进功能,也可以关闭缩进
|
||
输入左括号自动补全右括号,置光标于括号内
|
||
|
||
2022年12月1日更新:
|
||
更换代码编辑器的小图片框为按钮
|
||
编辑器增加了显示数字为高亮红色
|
||
增加了程序美化功能,可修改UI效果
|
||
补齐了编辑器之前被删除的功能
|
||
|
||
2022年12月3日更新:
|
||
修正编辑器里点击鼠标胡乱缩进的问题
|
||
修正计算上一级缩进字符数量的错误
|
||
增加设置缩进字符数量的功能,9为制表
|
||
改进搜索功能,有选中内容直接按下一个
|
||
修正字符串的颜色显示和多种关键字处理
|
||
控件编号显示在属性列表,禁止修改窗口名
|
||
实时显示光标所在行号以及选中文字数
|
||
|
||
2022年12月4日更新:
|
||
增加仿列举读数据,可以用#(n)读1字节,#[n]读两字节
|
||
增加仿列举写数据,可以用.#(n)写1字节,.#[n]写两字节
|
||
增加仿数组在变量名加中括号,如内容[2]是读1字节
|
||
内容[2]%读2字节,内容[2]&读4字节,括号内必须是数字
|
||
改进了返回语句后面可以加一个空格,不用括号直接写表达式
|
||
增加了支持其它文本文档形式的源码进行编译
|
||
增加了大写后缀SEC扩展名为源码列表文件,内含源码路径名
|
||
增加了在代码中指定程序类型的指定,0=EXE,1=控制台,2=DLL
|
||
增加了加数组语句对普通数组和非数组的支持,类似内存复制
|
||
增加了循环数组对无变量单个表达式的快速循环写入的支持
|
||
|
||
2022年12月5日更新:
|
||
修正返回浮点小数以及混合运算时使用括号优先计算的问题
|
||
增加了循环读数组使用`符号跳档读取数据,可加中括号偏移
|
||
增加了添加自定义类型资源文件的功能
|
||
调整添加图标文件的编号是加上默认程序图标的数量
|
||
窗口程序若无图标文件则不添加资源数据
|
||
|
||
2022年12月6日更新:
|
||
增加变量或函数名前面加冒号:可自动转换小数类型
|
||
修复优化普通运算导致全局变量计算错误的问题
|
||
加减数值以及与或异或的数值运算合并为统一函数
|
||
增加了代码中自定义程序版本的功能
|
||
取消了编程器默认自带的管理员权限
|
||
修正设计程序版本信息出错的问题
|
||
恢复设计窗体的网格大小固定为5
|
||
|
||
2022年12月10日更新:
|
||
修正取反运算数值结果计算错误的问题
|
||
增加了对变量进行取负和取绝对值的功能
|
||
变量前加-是取负,加!是取反,变量后加!是取绝对值
|
||
循环数组的指针取法跟普通数组算法统一
|
||
程序版本扩展为可以设置所有版权信息
|
||
修正使用CTRL+V粘贴两次的问题
|
||
|
||
2022年12月17日更新:
|
||
改进取负和取绝对值对于小数浮点变量的支持
|
||
增加cos=余,sin=正,sqr=根,atn=反,tan=切等浮点指令
|
||
用法:(a+b)余;(c)正;(a*a+b*b)根;(c)cos;(n)pat;
|
||
增加浮点小数的左右移运算,左移是乘以2的N次方,右移是取2的N次根
|
||
增加列举时可以使用.++指令跳到下个下标,也可以用.+3的数值增加
|
||
|
||
2022年12月18日更新:
|
||
改进取数组指针时切换寄存器等算法
|
||
修正循环数组判断写入文本长度的错误
|
||
优化数值增加算法兼容更多寄存器
|
||
优化加数组指令支持不同数据复制
|
||
改进小数数值的数字支持指数写法
|
||
|
||
2022年12月21日更新:
|
||
增加变量常量类型起名时检查存在的变量
|
||
名,小程序名,API函数名,类型名以及常量名
|
||
修正调用函数名写错时不提示错误的问题
|
||
增加自定义类型的数组和初始化数据赋值
|
||
|
||
2022年12月25日更新:
|
||
修正字节码优化误判导致程序的问题
|
||
增加整数运算等优化提升编译优化能力
|
||
调整子类变量数据指针的寄存器为EBX
|
||
检索指令扩展支持按多条件循环搜索
|
||
增加括号后使用abs或者绝,取绝对值
|
||
变量后加!取绝对值容易和!=误判故取消
|
||
优化列举指针和相对指针取值的比较
|
||
|
||
2023年1月11日更新:
|
||
静态数组增加使用大括号数据初始化赋值
|
||
改进整数运算优化时和数值运算的处理
|
||
优化比较判断的处理,取消支持第二条件表达式
|
||
|
||
2023年1月12日更新:
|
||
改进比较判断预判右边是否为表达式
|
||
增加了检查重名机制对于标记的检查
|
||
小程序代码段兼容大括号起始和结尾
|
||
修正包含数组表达式向数组赋值问题
|
||
|
||
2023年1月13日更新:
|
||
改进申请静态数组实际赋值数目不够时自动填充剩余数组的长度
|
||
改进多层循环跳出标记为集合数组,修正只有最内层有效的问题
|
||
改进循环语句不写条件时变成无条件循环,不受循环次数影响
|
||
|
||
2023年1月15日更新:
|
||
改进循环数组支持增值或减值循环写入
|
||
省略写入变量,括号后可以写等号
|
||
等号后面是初始值,不写等于循环次数
|
||
加号或减号后面是增量数字
|
||
|
||
2023年1月18日更新:
|
||
改进循环数组兼容各种静态数组和读取文本
|
||
带参数的小程序段括号后面加0兼容C库约定
|
||
|
||
2023年2月8日更新:
|
||
修正反斜杠转义英文字符错误的问题
|
||
增加单引号取字符编码值支持中英文
|
||
增加扩展名为极的源码列表文件支持
|
||
修正源码列表中空行无法编译的问题
|
||
修正循环字符串中文字取值两次问题
|
||
|
||
2023年2月11日更新:
|
||
增加小程序的参数类型默认为整数
|
||
补充字符串中转义字符退格符'\b'
|
||
增加中括号取数组及%&取值长度定义
|
||
与小括号取数组原理不同,避免寄存器重叠
|
||
|
||
2023年2月13日更新:
|
||
改进返回语句后加空格等效于加小括号
|
||
修正~`以及中括号取值时入栈两次问题
|
||
~`符号默认取4字节,加中括号取1字节
|
||
再加%取2字节,加&取4字节
|
||
|
||
2023年2月24日更新:
|
||
增加数字算式的预运算处理,前后需加中括号
|
||
中括号内支持加减乘除与或异或非八种运算
|
||
编辑器增加自动补全,中文标号符号转换等功能
|
||
支持首拼五笔英文中文方式,双击列表库名插入语句
|
||
|
||
2023年7月10日更新:
|
||
增加变量数组及子类变量运算时机器码的优化。
|
||
增大编辑器显示行号宽度,修正显示不全问题。
|
||
增加输入中文冒号和分号自动替换成英文符号。
|
||
设计器增加五种微软控件,即时显示实际效果。
|
||
选中控件要切换到指针,光标变成手形再选取。
|
||
调整控件大小更改为按住鼠标中键再拖曳鼠标。
|
||
|
||
2023年7月11日更新:
|
||
修正加数组指令选填字段名称时无法编译的问题
|
||
修正读取窗体源码保存标题栏变成窗体名的问题
|
||
修正窗体设计器标题栏不显示内容的问题
|
||
调整控件的顺序结构使之兼容之前的源码
|
||
设计窗口默认选中空指针并显示手形光标
|
||
示例源码少量扩充并修复无法编译的问题
|
||
|
||
2023年7月13日更新:
|
||
设计编辑控件标题名恢复为自动加双引号
|
||
恢复创建极语言编程的桌面快捷方式功能
|
||
|
||
2023年7月18日更新:
|
||
关键词和函数库注释内容去掉拼音和英文字母显示
|
||
检索函数库补全名称时增加括号内参数各项内容
|
||
修正检索补全功能时编辑器意外出错导致程序崩溃
|
||
|
||
2023年7月19日更新:
|
||
恢复编辑器行号显示,不再设置显示隐藏行号的开关
|
||
删除菜单栏下方工具栏所有按钮和单选复选框的设计
|
||
相关功能在菜单栏下都可以找到,常用功能有快捷键
|
||
输入选项调整至设置界面,并增加此选项保存配置功能
|
||
|
||
2023年7月20日更新:
|
||
增加输入中文双引号和单引号自动替换成英文符号。
|
||
修复右键添加窗体背景图片以及查看源码显示背景。
|
||
增加设置文字默认编码为宽字符以及相应函数切换。
|
||
|
||
2023年7月21日更新:
|
||
修正设置默认编码为宽字符后取消勾选出错的问题
|
||
代码编辑框的行号文字更改为向右对齐
|
||
修正选中控件时,不显示外围黑边框的问题
|
||
修正首拼检索重命名重置重绘重设重画等字母z改为c |