当前位置: 代码迷 >> VxWorks >> 怎么根据字符数组去执行相应的函数或者查找到变量(急)
  详细解决方案

怎么根据字符数组去执行相应的函数或者查找到变量(急)

热度:698   发布时间:2013-02-26 00:00:00.0
如何根据字符数组去执行相应的函数或者查找到变量(急!)
现在需要在没有操作系统的powerPC上完成这样一个类似串口的输入输出功能。注意是没有操作系统的裸CPU。

现在输出已经基本没问题了,可以通过SCC将数据打印在PC机的串口上,通过串口接收数据也没什么问题。

但是现在的问题是,我通过SCC接收到数据后,将所有的数据存放在一个字符数组中,如何根据里面的字符执行相应的函数,或者返回相应的变量值了?

比如,有用户在串口上敲入: printf "test",然后回车,那么在我接收到这些数据后,存放在数组char[]型中,数组里的数据应该是"printf "test""。我可以解析这个数组,根据空格的位置找到函数名和参数,但是我又该如何去将这些字符和符号表内的函数联系起来了?
再比如,如果用户用户敲入:var,(这里var假设是一个全局变量),那么在接收数组中,存储的字符是"var",我又怎么将这些字符和变量联系起来,并获取变量的值了?
还有,我如何区分用户敲的是变量名还是函数名了?

可能符号表会有些帮助,这些可能应该都在符号表中,但是因为没有操作系统,符号表好像也是在编译的过程中产生的,不知道该怎么去找到符号表在哪了?

希望大家有什么好的想法可以说说,谢谢大家!!

------解决方案--------------------------------------------------------
探讨

你要知道,一旦编译成机器语言,就不存在什么 “变量名”,“函数名”这些东西了,这些东西仅存在于编译之前。

你所希望的这种功能,从大了讲,就是在运行时能获得编译前的属性,类似高级语言里面的:反射(c++,c#)、自省(python)、RTTI(delphi),c语言的编译器是不支持这种特性的


从小的方面讲,你要实现的其实就是一套命令机制,发什么命令(字符串)就执行什么动作
程序里……

------解决方案--------------------------------------------------------
探讨
你的想法,我也知道,但是这样用case的形式,前提是我必须对哪些命令提前知道。
但是我想做的灵活一点,就像shell一样。因为我的是底层驱动,还要提交给应用来用的。如果他想在shell下执行自己的函数,该怎么做了?
还有就是,怎么区分是函数名还是变量名了?
我觉得,既然vxworks可以做到,那么我们应该也有办法的!
谢谢这位兄弟!
  相关解决方案