加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

MobileASM 编程器初试: 在手机上运行汇编

发布时间:2020-12-16 23:30:46 所属栏目:大数据 来源:网络整理
导读:4月忙碌在代码海洋中…… 虽然第一个编程器是一个不完整的汇编解释运行器,但还是很兴奋的。 2000行的代码,但很明显,代码耦合度有点高,应该把读取操作数的代码编成函数调用……去掉这些应该还有1500行吧…… 刚进高校,周围的人都在为编程的事苦恼着,怎

4月忙碌在代码海洋中……
虽然第一个编程器是一个不完整的汇编解释运行器,但还是很兴奋的。
2000行的代码,但很明显,代码耦合度有点高,应该把读取操作数的代码编成函数调用……去掉这些应该还有1500行吧……

刚进高校,周围的人都在为编程的事苦恼着,怎样才能随时随地编写程序呢?目光扫向了手机。我的手机是S40的,所以不能运行SIS程序,只有JAVA可选。
想起曾经用VB写了个“按键模拟程序”email给“按键精灵”,然后就发现从此“按键精灵”多了VB脚本功能……-_-///
那个程序里面其实用到了解释运行的方法,在VB里就是狂用case了……
半天看完JAVA语言与J2ME的MIDLET和CANVAS,接着就开始了。
一开始策划着写一个C语言的解释运行器,但规划时发现要考虑的东西太多,编下来遍乱了阵脚……
于是移出编好的程序UI,重新设计解释运行器。

1. 汇编解释运行器规划

解释器部分:
LineInfo
---------
|operator
|operator_No
---------
|oprand_num
|oprand_1
|oprand_1_type
|oprand_2
|oprand_2_type
---------

Interpreter
---------
|get_line_info
|get_operator
|check_operator
|get_oprand
|check_oprand
---------

运行器部分:
RunStack:
--------- U = int
|memory[16KU]
|push
|pop
|m_write
|m_read
|reg_write
|reg_read
|chang_flag
---------

RunCode
---------
|exe_a_line
|check_error
|display_result
|run_code
|(functions such as print,mov,add,dec,xor,jmp...)
---------

在使用exe_a_line的时候发现,如果递归地使用它,计算1+2+3+...+100时一个单循环在模拟器上运行正常,但在手机上直接Out of memory了……
所以改成了迭代式,在run_code中用while,直到遇到exit或end,或者空行(输出没有exit or end)结束……

2.后期思考
这个汇编的解释运行器:
(1)没有实现[ ]中的偏移计算,只能[reg]或[num]。
这个问题很好解决,只要写一个非常简单的表达式计算函数就行了——每次读一个数据和一个计算符并放入计算栈,最后按优先级计算结果。
(2)没有实现标签与变量自定义
这个可以用一个表实现——一个表中存储变量名,变量类型和变量字符化的值。
(3)提高运行速度
可以采用即时编译——输入一行代码后,即时编码成更方便读取的结构,提高运行效率。

向C的编译器发起进攻!!…………

J.Y.Liu

09.05.04

差不多两个月了,厄,还没时间继续写下去,那么……

分享下那耦合度比较高的烂烂的代码………………

http://sourceforge.net/projects/mobilecinjava/files/

说明:1.有些函数还没有完成 2.FLAGS设计有缺陷,需要重新编写……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读