projects
/
YACASL2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ubuntu 10.04 PPC版で判明した問題を修正
[YACASL2.git]
/
as
/
casl2lib
/
rev.casl
diff --git
a/as/casl2lib/rev.casl
b/as/casl2lib/rev.casl
index
8674381
..
397c5c4
100644
(file)
--- a/
as/casl2lib/rev.casl
+++ b/
as/casl2lib/rev.casl
@@
-1,13
+1,15
@@
-;; アドレスがGR1、長さがGR2の文字列を逆順に並べ替える
-;; 例: 12345 -> 54321、54321- -> -12345
+;;; メモリー上にある指定されたアドレス、長さの文字列を逆順に並べ替える
+;;; 例: 12345 -> 54321、54321- -> -12345
+;;; 入力 GR1:文字列のアドレス GR2:文字列の長さ
+;;; 出力 (同上)
REV START
RPUSH
LAD GR3,0 ; GR3の初期化
PU CPL GR3,GR2 ; ループ先頭。(GR3 = GR2)の場合、ループ脱出
JZE NEXT ; ↓
REV START
RPUSH
LAD GR3,0 ; GR3の初期化
PU CPL GR3,GR2 ; ループ先頭。(GR3 = GR2)の場合、ループ脱出
JZE NEXT ; ↓
- LD GR4,GR1 ; GR4
にGR1の値をコピー
+ LD GR4,GR1 ; GR4
<- GR1
ADDL GR4,GR3 ; GR4 <- GR4 + GR3
ADDL GR4,GR3 ; GR4 <- GR4 + GR3
- LD GR5,0,GR4 ; GR5
にアドレスGR4の値を格納
+ LD GR5,0,GR4 ; GR5
<- GR4アドレスの値
PUSH 0,GR5 ; GR5をプッシュ
LAD GR3,1,GR3 ; GR3 <- GR3 + 1
JUMP PU ; ループ終端
PUSH 0,GR5 ; GR5をプッシュ
LAD GR3,1,GR3 ; GR3 <- GR3 + 1
JUMP PU ; ループ終端
@@
-17,7
+19,7
@@
PO CPL GR3,GR2 ; ループ先頭。(GR3 = GR2)の場合、ル
POP GR5 ; GR5にポップ
LD GR4,GR1 ; GR4にGR1の値をコピー
ADDL GR4,GR3 ; GR4 <- GR4 + GR3
POP GR5 ; GR5にポップ
LD GR4,GR1 ; GR4にGR1の値をコピー
ADDL GR4,GR3 ; GR4 <- GR4 + GR3
- ST GR5,0,GR4 ;
アドレスGR4にGR5の値を格納
+ ST GR5,0,GR4 ;
GR4のアドレス <- GR5の値
LAD GR3,1,GR3 ; GR3 <- GR3 + 1
JUMP PO ; ループ終端
FIN RPOP
LAD GR3,1,GR3 ; GR3 <- GR3 + 1
JUMP PO ; ループ終端
FIN RPOP