Assemble addl.casl (0)
Label::::
-MAIN.A ---> #0005
-MAIN.B ---> #0006
MAIN ---> #0000
+MAIN.A ---> #0007
+MAIN.B ---> #0008
+MAIN.C ---> #0009
Assemble addl.casl (1)
addl.casl: 1:;;; ADDL r,adr
addl.casl: 2:MAIN START
addl.casl: 3: LD GR1,A
#0000 #1010
- #0001 #0005
+ #0001 #0007
addl.casl: 4: ADDL GR1,B
#0002 #2210
- #0003 #0006
-addl.casl: 5: RET
- #0004 #8100
-addl.casl: 6:A DC 3
- #0005 #0003
-addl.casl: 7:B DC 1
- #0006 #0001
-addl.casl: 8: END
+ #0003 #0008
+addl.casl: 5: ST GR1,C
+ #0004 #1110
+ #0005 #0009
+addl.casl: 6: RET
+ #0006 #8100
+addl.casl: 7:A DC 3
+ #0007 #0003
+addl.casl: 8:B DC 2
+ #0008 #0002
+addl.casl: 9:C DS 1
+ #0009 #0000
+addl.casl: 10: END
@end example
なお、オプション@option{-A}を指定すると、アセンブル結果が表示される時点で処理が終了します。
-仮想マシンCOMET II での実行は行われません。
+仮想マシンCOMET IIでのプログラム実行はされません。
@node Register and memory, Only assemble, Assemble result, Sample usage
@section 実行時のレジスタとメモリを表示
* Step count:: プログラムのステップ数を表示
@end menu
-@file{addl.casl}ã\81«å¿\85è¦\81ã\81ªã\83¡ã\83¢ã\83ªå®¹é\87\8fã\81¯8èª\9eã\81®ã\81\9fã\82\81、次のようにCPUのレジスタとメモリの内容を表示できます。
+@file{addl.casl}ã\81§ã\81¯、次のようにCPUのレジスタとメモリの内容を表示できます。
@example
-$ @kbd{casl2 -t -d -M8 addl.casl | less}
+$ @kbd{casl2 -t -d -M16 addl.casl | less}
Assemble addl.casl (0)
#0000: GR5: 0 = #0000 = 0000000000000000
#0000: GR6: 0 = #0000 = 0000000000000000
#0000: GR7: 0 = #0000 = 0000000000000000
-#0000: SP: 8 = #0008 = 0000000000001000
+#0000: SP: 16 = #0010 = 0000000000010000
#0000: PR: 0 = #0000 = 0000000000000000
#0000: FR (OF SF ZF): 000
#0000: Memory::::
-#0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007
-#0000: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
+#0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F
+ -------------------------------------------------------------------------------------
+#0000: 0000: 1010 0007 2210 0008 1110 0009 8100 0003 0002 0000 0000 0000 0000 0000 0000 0000
+
#0002: Register::::
#0002: GR0: 0 = #0000 = 0000000000000000
#0002: GR1: 3 = #0003 = 0000000000000011
#0002: GR5: 0 = #0000 = 0000000000000000
#0002: GR6: 0 = #0000 = 0000000000000000
#0002: GR7: 0 = #0000 = 0000000000000000
-#0002: SP: 8 = #0008 = 0000000000001000
+#0002: SP: 16 = #0010 = 0000000000010000
#0002: PR: 2 = #0002 = 0000000000000010
#0002: FR (OF SF ZF): 000
#0002: Memory::::
-#0002: adr : 0000 0001 0002 0003 0004 0005 0006 0007
-#0002: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
+#0002: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F
+ -------------------------------------------------------------------------------------
+#0002: 0000: 1010 0007 2210 0008 1110 0009 8100 0003 0002 0000 0000 0000 0000 0000 0000 0000
+
#0004: Register::::
#0004: GR0: 0 = #0000 = 0000000000000000
-#0004: GR1: 4 = #0004 = 0000000000000100
+#0004: GR1: 5 = #0005 = 0000000000000101
#0004: GR2: 0 = #0000 = 0000000000000000
#0004: GR3: 0 = #0000 = 0000000000000000
#0004: GR4: 0 = #0000 = 0000000000000000
#0004: GR5: 0 = #0000 = 0000000000000000
#0004: GR6: 0 = #0000 = 0000000000000000
#0004: GR7: 0 = #0000 = 0000000000000000
-#0004: SP: 8 = #0008 = 0000000000001000
+#0004: SP: 16 = #0010 = 0000000000010000
#0004: PR: 4 = #0004 = 0000000000000100
#0004: FR (OF SF ZF): 000
#0004: Memory::::
-#0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007
-#0004: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
+#0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F
+ -------------------------------------------------------------------------------------
+#0004: 0000: 1010 0007 2210 0008 1110 0009 8100 0003 0002 0000 0000 0000 0000 0000 0000 0000
+
+#0006: Register::::
+#0006: GR0: 0 = #0000 = 0000000000000000
+#0006: GR1: 5 = #0005 = 0000000000000101
+#0006: GR2: 0 = #0000 = 0000000000000000
+#0006: GR3: 0 = #0000 = 0000000000000000
+#0006: GR4: 0 = #0000 = 0000000000000000
+#0006: GR5: 0 = #0000 = 0000000000000000
+#0006: GR6: 0 = #0000 = 0000000000000000
+#0006: GR7: 0 = #0000 = 0000000000000000
+#0006: SP: 16 = #0010 = 0000000000010000
+#0006: PR: 6 = #0006 = 0000000000000110
+#0006: FR (OF SF ZF): 000
+#0006: Memory::::
+#0006: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F
+ -------------------------------------------------------------------------------------
+#0006: 0000: 1010 0007 2210 0008 1110 0009 8100 0003 0002 0005 0000 0000 0000 0000 0000 0000
@end example
@node Register specify, End value, Register and memory, Register and memory
#0004: GR1: 4 = #0004 = 0000000000000100
@end example
-この内容を、先に出力したアセンブル結果と引き比べてください。
+この内容を、先に出力したアセンブル結果と比較してください。
次の表のように、PRとGR1、命令行が対応していることがわかります。
@multitable @columnfractions .3 .3 .4
@item PR @tab GR1 @tab 命令行
@item #0000
@tab #0000
+@tab (なし)
@item #0002
@tab #0003
@tab @code{LD GR1,A}
#0004: GR1: 4 = #0004 = 0000000000000100
@end example
-@file{sum_10.casl}は、1から10までの整数の和を求めます。
+@file{sum_10.casl}ã\81¯ã\80\811ã\81\8bã\82\8910ã\81¾ã\81§ã\81®æ\95´æ\95°ã\81®å\92\8cã\82\92æ±\82ã\82\81ã\80\81GR2ã\81«æ ¼ç´\8dã\81\97ã\81¦ã\81\8bã\82\89ã\83¡ã\83¢ã\83ªã\81«ã\82¹ã\83\88ã\82¢ï¼\88æ\9b¸ã\81\8dè¾¼ã\81¿ï¼\89ã\81\97ã\81¾ã\81\99ã\80\82
@example
$ @kbd{cat sum_10.casl}
END
@end example
-@file{sum_10.casl}ã\81§ã\83\95ã\82¡ã\82¤ã\83«çµ\82äº\86æ\99\82の値を確認するには、次のようにします。
+@file{sum_10.casl}ã\81§ã\83\97ã\83ã\82°ã\83©ã\83 çµ\82äº\86æ\99\82ã\81®GR2の値を確認するには、次のようにします。
@example
-$ @kbd{casl2 -t sum_10.casl | grep 'GR0:' | tail -1}
-#0010: GR0: 55 = #0037 = 0000000000110111 = '7'
+$ @kbd{casl2 -t sum_10.casl | grep 'GR2:' | tail -1}
+#000E: GR2: 55 = #0037 = 0000000000110111 = '7'
@end example
@node Step count, , End value, Register and memory
@file{sum_10.casl}はプログラム内にループがあるため、ステップ数が大きくなります。
@example
-$ @kbd{casl2 -t sum_10.casl | grep 'GR0:' | wc -l}
-54
+$ @kbd{casl2 -t sum_10.casl | grep 'GR2:' | wc -l}
+53
@end example
@node Only assemble, Analyze word, Register and memory, Sample usage