上学期大学时,我的计算机语言课程的老师教给我们一个名为

Whitespace的深奥语言.为了更好地学习语言,我的课程非常繁忙(midterms),我在

Python写了一个

interpreter和

assembler.7004被设计了为了方便编写程序,使用给定的程序集

mnemonics编写了

sample program.

现在是夏天,一个新的项目已经开始,其目标是重写Whitespace 0.3的翻译和汇编程序,之后会有进一步的发展.由于有很多额外的时间来处理它的设计,因此这里给出的是一个大纲,它为汇编语言提供了一套修订的助记符.这篇文章被标记为维基进行讨论.

你曾经有过汇编语言的经验吗?是否有一些您认为应该重命名为不同的指令?您是否发现自己在盒子外面思考并使用与助记符命名不同的范例?如果您对这些问题的回答都是肯定的,那么欢迎您.主观答案非常感谢!

堆栈操作(IMP:[空格])

堆栈操作是更常见的操作之一,因此IMP [空间]的短缺.有四个堆栈指令.

hold N Push the number onto the stack

copy Duplicate the top item on the stack

copy N Copy the nth item on the stack (given by the argument) onto the top of the stack

swap Swap the top two items on the stack

drop Discard the top item on the stack

drop N Slide n items off the stack, keeping the top item

算术(IMP:[Tab] [Space])

算术命令对堆栈中的前两项进行操作,并将其替换为操作结果.推送的第一个项目被认为是运算符的左侧.

add Addition

sub Subtraction

mul Multiplication

div Integer Division

mod Modulo

堆访问(IMP:[Tab] [Tab])

堆访问命令查看堆栈以查找要存储或检索的项的地址.要存储项目,请按地址然后按值并运行store命令.要检索项目,请按地址并运行retrieve命令,该命令将存储在堆栈顶部位置的值.

save Store

load Retrieve

流量控制(IMP:[LF])

流量控制操作也很常见.子程序由标签标记,以及条件和无条件跳转的目标,通过它们可以实现循环.程序必须通过[LF] [LF] [LF]结束,以便解释器可以干净地退出.

L: Mark a location in the program

call L Call a subroutine

goto L Jump unconditionally to a label

if=0 L Jump to a label if the top of the stack is zero

if<0 L Jump to a label if the top of the stack is negative

return End a subroutine and transfer control back to the caller

halt End the program

I / O(IMP:[Tab] [LF])

最后,我们需要能够与用户进行交互.有用于读取和写入数字和单个字符的IO指令.有了这些,就可以编写字符串操作例程.读取指令采用堆栈地址来存储堆栈顶部的结果.

print chr Output the character at the top of the stack

print int Output the number at the top of the stack

input chr Read a character and place it in the location given by the top of the stack

input int Read a number and place it in the location given by the top of the stack

问题:您将如何重新设计,重写或重命名以前的助记符以及原因?

python和汇编_python – 你对这些汇编助记符有什么建议吗?相关推荐

  1. python合法的字符串_Python判断字符串是否为合法标示符操作

    这学期在学习编译原理,最近的上机作业就是做一个简单的词法分析器,在做的过程中,突然有个需求就是判断一个字符串是否为合法的标示符,因为我是用python语言做的,做的是Python的词法分析器,于是下面 ...

  2. python getattribute方法_Python:__ getattribute__方法和描述符

    实际上,在CPython中,默认的__getattribute__实现不是Python方法,而是在C中实现.它可以直接访问对象槽(C结构中表示Python对象的条目),而无需经过麻烦的属性访问例程. ...

  3. python print 分隔符_python print 使用分隔符 或行尾符

    使用print() 函数输出数据,但是想改变默认的分隔符或者行尾符. >>> print('ACME', 50, 91.5) ACME 50 91.5 >>> pr ...

  4. python输出间隔符_python print 使用分隔符 或行尾符

    使用print() 函数输出数据,但是想改变默认的分隔符或者行尾符. >>> print('ACME', 50, 91.5) ACME 50 91.5 >>> pr ...

  5. python 汇编_python 汇编

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我一直在玩dis库来反汇编一些python源代码,但我看到这并不是递归到函数或类 ...

  6. python是不是汇编语言_python是汇编语言吗

    python是汇编语言吗?这个问题的本质是高级语言和低级语言的概念,汇编是数据机器语言,而Python是高级编程语言. 那么高级语言和低级语言是什么? 最初的计算机程序都是用0和1的序列表示的,程序员 ...

  7. python计算机语言基础_PYTHON之计算机语言基础知识 —— 编程语言的分类

    一.计算机语言分类 低级语言.高级语言.专用语言.脚本语言 1.低级语言:机器语言.汇编语言和符号语言.机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令(机器码)的合集,他是计算机的设 ...

  8. python的基本原理_python基础1(理论基础)

    1.python是什么语言 2.python的发展史 3.python2与python3的区别 4.python的语言类型 5.python的优缺点 6.IDLE是什么 7.变量是什么 一.pytho ...

  9. linux汇编和x86汇编,linux平台学x86汇编(四):从“hello world!”开始

    [版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 汇编语言程序由定义好的段构成,每个段有各自的目的.三个最常用的的段如下:数据段 ...

最新文章

  1. 用netty实现zcool_Netty 如何玩转内存使用
  2. python压缩与解压缩
  3. PV(page view)
  4. 字节跳动再扩招1000人,招聘要求让人窒息
  5. SpringMVC日期类型转换问题三大处理方法归纳
  6. Linux 文件夹权限
  7. VB用API控制输入法状态
  8. Shortest Prefixes
  9. 阶段3 1.Mybatis_10.JNDI扩展知识_3 补充-测试JNDI数据源的使用以及使用细节
  10. 阿里联手数据港合建数据中心 服务金额至少40亿
  11. 王佩丰excel教程笔记(排序 筛选)
  12. 骑士CMSgetshell复现
  13. IOS开发学习--(3)摇骰子APP
  14. 大白菜 装系统 win7
  15. OpenMp之sections用法
  16. 未来的世界:方向比努力重要,能力比知识重要,健康比成绩重要,生活比文凭重要,情商比智商重要!
  17. scratch 学习网址:
  18. 交通运输大数据发展特点、政策、应用及趋势 | 交通运输部科学研究院黄莉莉
  19. 看见、读懂、放大,这个运营套路有点意思
  20. LeetCode每日一题,积少成多,量变到质变(最近比较忙不定期持续更新.........)

热门文章

  1. php判断是否是微信浏览器,php判断是否为微信浏览器浏览简单示例
  2. android 触摸屏监控,如何实现在安卓手机上对PLC进行监控-工业支持中心-西门子中国...
  3. 2016计算机考研330分,考研330分什么概念_中国研究生招生信息网官方
  4. 【计算机视觉】NCC匹配算法
  5. 代码规范检查工具+代码规范生成工具
  6. CTPN CRNN-Pytorch 银行卡号识别
  7. Unity 的协程的原理
  8. matlab6.0哪一年,MATLAB版本与年份间的对应关系
  9. 高斯混合模型(Gaussian Mixture Model,GMM)
  10. SLAM--Geometric jacobian of UR series.