首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mmix交互模式期间检查寄存器内容

在mmix交互模式期间检查寄存器内容
EN

Stack Overflow用户
提问于 2012-10-11 14:02:17
回答 1查看 312关注 0票数 5

我想知道当我要求查看寄存器的内容时,如何在交互模式下使用mmix显示寄存器的内容。例如,我有一个简单的mmix程序:

代码语言:javascript
复制
% Compute D=4A-2B+16C
%LABEL      OPCode      Operands        Comments
            LOC         Data_Segment
            GREG        @
A           OCTA        3          Reserve an octabyte for A
B           OCTA        #10        Reserve an octabyte for B
C           OCTA        2          Reserve an octabyte for C
D           OCTA        0          Reserve an octabyte for D

            LOC         #100            start assembly instructions
Main        LDO         $0,A            $0 contents of A
            LDO         $1,B            $1 contents of B
            LDO         $2,C            $2 contents of C
            SL          $0,$0,2         $0 = 4*$0
            SL          $1,$1,1         $1 = 2*$1
            SL          $2,$2,4         $2 = 16*$2
            SUB         $0,$0,$1        $0 < 4A-2B
            ADD         $0,$0,$2        $0 < 4A-2B+16C
            STO         $0,D            store answer in D

我可以运行mmix -i myprog.mmo来获得输出:

代码语言:javascript
复制
mmix> 
           (00000000000000fc: fb0000ff (UNSAVE)) #6000000000000088: rG=254, ..., rL=2
  0 instructions, 0 mems, 0 oops; 0 good guesses, 0 bad
  (now at location #0000000000000100)
mmix> 
         1. 0000000000000100: 8d00fe00 (LDOI) $0=l[0] = M8[#2000000000000000] = 3
  1 instruction, 1 mem, 1 oop; 0 good guesses, 0 bad
  (now at location #0000000000000104)
mmix> 
         1. 0000000000000104: 8d01fe08 (LDOI) $1=l[1] = M8[#2000000000000000+8] = 16
  2 instructions, 2 mems, 2 oops; 0 good guesses, 0 bad
  (now at location #0000000000000108)
mmix> 
         1. 0000000000000108: 8d02fe10 (LDOI) rL=3, $2=l[2] = M8[#2000000000000000+16] = 2
  3 instructions, 3 mems, 3 oops; 0 good guesses, 0 bad
  (now at location #000000000000010c)
mmix> 
         1. 000000000000010c: 39000002 (SLI) $0=l[0] = 3 << 2 = 12
  4 instructions, 3 mems, 4 oops; 0 good guesses, 0 bad
  (now at location #0000000000000110)
mmix> 
         1. 0000000000000110: 39010101 (SLI) $1=l[1] = 16 << 1 = 32
  5 instructions, 3 mems, 5 oops; 0 good guesses, 0 bad
  (now at location #0000000000000114)
mmix> 
         1. 0000000000000114: 39020204 (SLI) $2=l[2] = 2 << 4 = 32
  6 instructions, 3 mems, 6 oops; 0 good guesses, 0 bad
  (now at location #0000000000000118)
mmix> 
         1. 0000000000000118: 24000001 (SUB) $0=l[0] = 12 - 32 = -20
  7 instructions, 3 mems, 7 oops; 0 good guesses, 0 bad
  (now at location #000000000000011c)
mmix> 
         1. 000000000000011c: 20000002 (ADD) $0=l[0] = -20 + 32 = 12
  8 instructions, 3 mems, 8 oops; 0 good guesses, 0 bad
  (now at location #0000000000000120)
mmix> 
         1. 0000000000000120: ad00fe18 (STOI) M8[#2000000000000000+24] = 12
  9 instructions, 4 mems, 9 oops; 0 good guesses, 0 bad
  (now at location #0000000000000124)
mmix> 
         1. 0000000000000124: 00000000 (TRAP) Halt(0)
  10 instructions, 4 mems, 14 oops; 0 good guesses, 0 bad
  (halted at location #0000000000000124)
mmix> 
  10 instructions, 4 mems, 14 oops; 0 good guesses, 0 bad
  (halted at location #0000000000000124)

这一切都很好。但是如果我想在交互运行的过程中检查一些寄存器的内容,我需要做些什么呢?另外,如何查看十六进制而不是十进制的内容?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-17 05:55:52

对于那些感兴趣的人,显然不是很多人:),我正在寻找的信息可以在the MMIX documentation站点上找到。然后查看第3页上的mmix-sim.pdf文件。

尤其是为了检查模拟器类型中的局部寄存器

代码语言:javascript
复制
l0

查看本地寄存器$0内容(以十进制表示)。如果您想要将本地寄存器设置为某个值,则只需

代码语言:javascript
复制
l0=27.0

所以现在$0是27.0的64位浮点表示!如果您想查看十六进制,只需执行以下操作

代码语言:javascript
复制
l0#.

剩下的你们可以自己读了。文档包括如何设置断点等。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12833144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档