新Emoji工具: 复制✂粘贴表情📝词典

小计算器/编译原理学习日记简单指令型计算器(1)指令系统和汇编编译器

小计算器相关知识 - 编译原理学习日记简单指令型计算器(1)指令系统和汇编编译器


这一系列“编译原理学习日记”中的所有文章为作者个人的准Weblog,所有文章版权均属作者所有。转载请注明出处(CSDN文档中心)、作者(lover_P)及作者联系方式(lyb_dotNET@hotmail.com),并在转载前与作者联系。




附录1 虚拟机指令型计算器指令系统说明

1、运算栈控制指令

  这一组指令用于对运算栈进行控制,包括下面这些指令:

PUSH指令

  该指令用于向运算栈中压入一个操作数。

DUP指令

  该指令复制一个栈顶的操作数,并将这个副本压入运算栈。

  这条指令的设计源于IL汇编语言中的dup指令,该指令可以用于将中间结果复制一份,并将副本输出,而原操作数仍留在栈中进行下一步运算。

OUT指令

  该指令将栈顶操作数输出到标准输出中。


2、运算指令

  这一组指令用于进行具体的运算,其基本运行机理是按照从右到左的规则从运算栈中推出各个操作数,再将运算结果压入运算栈。这一组指令中又分为以下一些类型:

  a. 四则运算指令

ADD指令

  该指令从运算栈中弹出两个操作数,进行加法运算后将结果压入运算栈。

SUB指令

  该指令从运算栈中弹出两个操作数,进行减法运算后将结果压入运算栈。

MUL指令

  该指令从运算栈中弹出两个操作数,进行乘法运算后将结果压入运算栈。

DIV指令

  该指令从运算栈中弹出两个操作数,进行除法运算后将结果压入运算栈。


  b. 指数运算指令

EXP指令

  该指令从运算栈中弹出一个操作数,计算以e为底的指数ex值,并将结果压入运算栈。

SQR指令

  该指令从运算栈中弹出一个操作数,计算它的平方,并将结果压入运算栈。

CUB指令

  该指令从运算栈中弹出一个操作数,计算它的立方,并将结果压入运算栈。

POW指令

  该指令从运算栈中弹出连个操作数,设先出栈的操作数为y,后出栈的操作数为x,计算xy,并将结果压入运算栈。

SQRT指令

  该指令从运算栈中弹出一个操作数,计算它的平方根,并将结果压入运算栈。

CBRT指令

  该指令从运算栈中弹出一个操作数,计算它的立方根,并将结果压入运算栈。


  c. 对数运算指令

LN指令

  该指令从运算栈中弹出一个操作数,计算它的以e为底的对数,并将结果压入运算栈。

LG指令

  该指令从运算栈中弹出一个操作数,计算它的以10为底的对数,并将结果压入运算栈。

LOG指令

  该指令从运算栈中弹出两个操作数,计算logxy,并将结果压入运算栈。


  d. 三角函数运算指令

SIN指令

  该指令从运算栈中弹出一个操作数,计算它(弧度)的三角正弦值,并将结果压入运算栈。

CON指令

  该指令从运算栈中弹出一个操作数,计算它(弧度)的三角余弦值,并将结果压入运算栈。

TAN指令

  该指令从运算栈中弹出一个操作数,计算它(弧度)的三角正切值,并将结果压入运算栈。

CTN指令

  该指令从运算栈中弹出一个操作数,计算它(弧度)的三角余切值,并将结果压入运算栈。


  e. 反三角函数运算指令

ASIN指令

  该指令从运算栈中弹出一个操作数,计算它的三角反正弦值(弧度),并将结果压入运算栈。

ACOS指令

  该指令从运算栈中弹出一个操作数,计算它的三角反余弦值(弧度),并将结果压入运算栈。

ATAN指令

  该指令从运算栈中弹出一个操作数,计算它的三角反正切值(弧度),并将结果压入运算栈。

ACTN指令

  该指令从运算栈中弹出一个操作数,计算它的三角反余切值(弧度),并将结果压入运算栈。


  f. 双曲函数运算指令

SINH指令

  该指令从运算栈中弹出一个操作数,计算它(弧度)的双曲正弦值,并将结果压入运算栈。

COSH指令

  该指令从运算栈中弹出一个操作数,计算它(弧度)的双曲余弦值,并将结果压入运算栈。

TANH指令

  该指令从运算栈中弹出一个操作数,计算它(弧度)的双曲正切值,并将结果压入运算栈。

CTNH指令

  该指令从运算栈中弹出一个操作数,计算它(弧度)的双曲余切值,并将结果压入运算栈。


  g. 反双曲函数运算指令

ASINH指令

  该指令从运算栈中弹出一个操作数,计算它的双曲反正弦值(弧度),并将结果压入运算栈。

ACOSH指令

  该指令从运算栈中弹出一个操作数,计算它的双曲反余弦值(弧度),并将结果压入运算栈。

ATANH指令

  该指令从运算栈中弹出一个操作数,计算它的双曲反正切值(弧度),并将结果压入运算栈。

ACTNH指令

  该指令从运算栈中弹出一个操作数,计算它的双曲反余切值(弧度),并将结果压入运算栈。

关于“小计算器/编译原理学习日记简单指令型计算器(1)指令系统和汇编编译器”的留言:

目前暂无留言

新增相关留言