VB   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了MobileASM 编程器初试: 在手机上运行汇编大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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设计有缺陷,需要重新编写……

大佬总结

以上是大佬教程为你收集整理的MobileASM 编程器初试: 在手机上运行汇编全部内容,希望文章能够帮你解决MobileASM 编程器初试: 在手机上运行汇编所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。