无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
12
返回列表 发新帖
楼主: 不点
打印 上一主题 下一主题

grub4dos-0.4.5b-2011-08-18

[复制链接]
31#
发表于 2011-9-1 16:11:43 | 只看该作者

回复 #30 zhaohj 的帖子

前辍处理起来比较简单.后辍不方便.
回复

使用道具 举报

32#
发表于 2011-9-1 19:16:17 | 只看该作者
新增一个命令func如何?语法形式为func NUMBER,NUMBER是调用功能号。
回复

使用道具 举报

33#
发表于 2011-9-1 19:19:35 | 只看该作者
还有一种方法,但是要动大手术了,增加函数调用功能,把这一功能实现为函数func()。
回复

使用道具 举报

34#
发表于 2011-9-1 20:18:39 | 只看该作者
本来就是函数,写为函数是最合理的。
回复

使用道具 举报

35#
发表于 2011-9-1 21:07:30 | 只看该作者
新增命令,没有必要。

实现为函数???????那你要怎么去调用,再写一个命令???

这个功能只供开发者使用,所以我觉得还是简单一点好。

我觉得使用call Fn.xxx的方式挺方便的,也直观。
回复

使用道具 举报

36#
发表于 2011-9-1 21:40:04 | 只看该作者
现在有三套方案:
1 给call增加一个新的参数,代码空间占用最少,但是使用不太方便自然。
2 增加一个新的命令func NUMBER,这会占用一定的代码空间,但是更方便自然了。
3 增加函数调用功能,这是一个大工程,这需要统筹兼顾,好好设计一番。
     这一功能实现的难度如何?是否会与已有的功能产生冲突?已有的功能否充分利用新增的功能,如在复合语句中同时使用新旧功能是否方便自然?增加这一功能是否划算?如果实现了函数调用功能,一些以前命令也可以转化为函数,比如read,write等,那么哪些功能适合设计成命令,哪些功能适合设计成函数,这也需要好好统筹一番。
    既然增加了函数调用功能,grub4dos.h中的函数干脆以原本的样子引入,或者稍微修改一下,遮掩最自然了。
    如果这些都能够实现的话,那么就更像一个完整的编程语言了。这也许是grub4dos未来的样子,我们可以好好憧憬一下。

[ 本帖最后由 2011_dihuo0 于 2011-9-1 21:43 编辑 ]
回复

使用道具 举报

37#
发表于 2011-9-1 22:15:02 | 只看该作者

回复 #35 chenall 的帖子

我同意这种加点的方式,直观高效!
回复

使用道具 举报

38#
发表于 2011-9-1 23:25:23 | 只看该作者
我又想到几种语法:
1 call --func=number arg...,保持与其他命令语法风格上的统一,我反对call fn.xxx的形式主要就是因为破坏了整体语法风格的统一
2 call func(number,arg...),不实现函数功能的,无函数之实,但有函数之形,为以后函数功能的引入打下一个基础。
3 call func(FunctionName,arg...)
4 call func number arg...,此时,func将是保留字,不能再做标签。call可以调用内部命令,func在某种程度上也可以看作为一个命令,增加某个命令之前的一个实验,如果以后确有必要再增加这个命令。
5 call func FunctionName arg...
其中number是功能调用号,FunctionName是内部函数名。

[ 本帖最后由 2011_dihuo0 于 2011-9-2 12:31 编辑 ]
回复

使用道具 举报

39#
发表于 2011-9-2 08:40:24 | 只看该作者
汗,也扯得太远了..

我还是使用call Fn.xxx吧.
回复

使用道具 举报

40#
发表于 2011-9-2 09:18:53 | 只看该作者

回复 #39 chenall 的帖子

未雨绸缪嘛,迟早也得加入函数功能,现在讨论一下,到时候也做好准备了。

我反对call fn.xxx的形式主要就是因为破坏了整体语法风格的统一。
回复

使用道具 举报

41#
发表于 2011-9-2 09:31:48 | 只看该作者
我还没有明白你所谓的函数功能具体是如何使用的.

你可否给一个实例供我了解一下.要如何封装?如何调用?

另外这个功能我本来是要作为一个Undocumented Functions来使用的.只是为了方便.

[ 本帖最后由 chenall 于 2011-9-2 09:35 编辑 ]
回复

使用道具 举报

42#
 楼主| 发表于 2011-9-2 10:03:59 | 只看该作者
未公开的好处是开发者很自由。只要保持未公开状态,可以任意尝试。未公开的东西,将来都可能变,随时都可能变。
回复

使用道具 举报

43#
发表于 2011-9-2 12:30:28 | 只看该作者
回复 #41 chenall 的帖子

如果保留命令的形式,我建议采用下面的形式:
原帖由 2011_dihuo0 于 2011-9-1 23:25 发表
4 call func number arg...,此时,func将是保留字,不能再做标签。call可以调用内部命令,func在某种程度上也可以看作为一个命令,增加某个命令之前的一个实验,如果以后确有必要再增加这个命令。
5 call func FunctionName arg...
其中number是功能调用号,FunctionName是内部函数名。


相当于把你的call Fn.xxx中点(.)换成了空格(  ),
比如:把
call #0 "test string: %s." "my test"                   改为:
call func 0 "test string: %s." "my test",          这时使用的是功能调用号,或者改为:
call func sprintf   "test string: %s." "my test"   这时使用的是函数名。



至于函数的形式,你看看下面的是否可行:

原帖由 2011_dihuo0 于 2011-9-1 23:25 发表
2 call func(number,arg...),不实现函数功能的,无函数之实,但有函数之形,为以后函数功能的引入打下一个基础。
3 call func(FunctionName,arg...)


利用call命令调用函数func(),第一个参数是功能调号或函数名,后面是参数列表,参数列表arg...就采用你已经使用的形式。
比如:把
call #0 "test string: %s." "my test"                   改为:
call func(0,"test string: %s." "my test"),         这时使用的是功能调用号,或者改为:
call func(sprintf  ,"test string: %s." "my test")  这时使用的是函数名。


这个例子取自ChangeLog_chenall.txt。
这两种形式在某种意义上是等价的。

[ 本帖最后由 2011_dihuo0 于 2011-9-2 15:00 编辑 ]
回复

使用道具 举报

44#
发表于 2011-9-2 16:37:41 | 只看该作者
函数形式看起来是比较直观些,不过太浪费代码了.
若是用函数名的方式就更浪费了,需要保存所有要调用的函数名.以后再考虑.

目前还是简单一点好.

以下两种我倒是觉得后面的比较直观.

call func xxx arg...
call Fn.xxx  arg....

大家觉得呢?

晚上再更新一下,删除更新记录里面的相关信息,不公开.
回复

使用道具 举报

45#
发表于 2011-9-2 16:51:09 | 只看该作者

回复 #44 chenall 的帖子

要不 call func# num arg...?
将来还可以添加 call func name arg...
回复

使用道具 举报

46#
发表于 2011-9-2 16:57:32 | 只看该作者
作为不公开的功能,变数应该还多。目前,就如chenall所说简单处理一下就行了。

[ 本帖最后由 zxw 于 2011-9-2 17:25 编辑 ]
回复

使用道具 举报

47#
发表于 2011-9-2 19:17:28 | 只看该作者

回复 #44 chenall 的帖子

我支持call func number arg...形式,
我反对call Fn.xxx  arg....的形式主要就是因为破坏了整体语法风格的统一。
回复

使用道具 举报

48#
发表于 2011-9-2 19:39:59 | 只看该作者
各个内部函数的功能都是什么?能不能详细的解释一下呢?grub4dos.h太过简略了。或者告诉我们如何查找这方面的资料。
回复

使用道具 举报

49#
发表于 2011-9-2 19:54:28 | 只看该作者
新的版本已经上传,删除了相关的信息,这个功作不公开。

只判断前两个字符Fn,所以你可以用如下语法都是合法的(喜欢怎样就就怎么样用)。

call Fn xxx arg....
call Fn.xx arg...
call Fn#xx arg....

一些函数的用法自己上Google查一下C语言相同函数基本差不多,其它的需要对GRUB4DOS核心比较熟悉才懂得使用。

很多函数我也不懂得用,我都是需要用的时候再临时去看相关源代码。
回复

使用道具 举报

50#
发表于 2011-9-3 08:23:43 | 只看该作者
回复 #49 chenall 的帖子


看源码:
++arg;  → arg += 3;

[ 本帖最后由 zxw 于 2011-9-3 08:48 编辑 ]
回复

使用道具 举报

51#
发表于 2011-9-3 09:11:59 | 只看该作者
重新上传了,源码改了几次恢复错了.汗..

现在用GIT来管理源码,还没有熟悉GIT.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-2 21:56

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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