NEW_RSPASM
4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
==============================================================================
R S P A S M 2.30 R E A D M E
==============================================================================
$Id: NEW_RSPASM,v 1.1.1.1 2002/05/02 03:29:10 blythe Exp $
rspasm の改良版です. rspasm 2.30 は rspasm 2.0 の上位互換となっています.
変更箇所は以下の通りとなっています.
-------------------------
V2.20--->V2.30 の修正箇所
-------------------------
o .text 命令と .space 命令の相性に関するバグの修正
複数の .text <ID> 命令を処理した後で IMEM 領域で .space 命令を使うと
.space が誤動作するのを修正しました. また .space 命令で指定したアドレ
スが既にオーバーしていたときにエラーを出すようにしました.
また .text 命令で指定したアドレスと @codecount で得られるアドレスの8
Bytes Alignment が, 不一致の場合にエラーを出すようにした. これは DMA
処理するときに双方が 8 Bytes 境界に一致している必要があるからである.
o 長い Path 名で参照される file のリスティングの修正.
長い Path 名で参照される file のリスティング (*.lst ファイルの出力)
が正常に動作しないのを修正しました.
o エラーを検出時に停止するように修正
エラーを検出しても停止しないことがあったのを修正し, エラー時には停止
するようにした.
-------------------------
V2.00--->V2.20 の修正箇所
-------------------------
o ブランチ命令のターゲットに関するバグの修正
以下のようにブランチ系の命令でのターゲットとして使用しているラベルを
そのブランチ命令以降かつラベル登場以前に, 非ブランチ命令で参照するとそ
のラベルの値が 0 として設定されてしまうというものです. これは -S オプ
ションでシンボルファイルを読み込んだ場合でも発生していました.
---------------------------------------------------------
beq $1, zero, Skip1
....
ori $31, zero, Skip1
....
Skip1:
---------------------------------------------------------
これを修正し, -S オプションなしのときはエラーを返すようにし,
また -S オプションありの場合はシンボルファイルを見に行くように
修正しました.
o -F オプションの追加
-F オプションでシンボルが見当たらないときのエラーメッセージを抑制で
きるようにしました. これはシンボルファイルの作成時に画面へ表示されるエ
ラーメッセージを軽減するためです.
o .text の動作のバグ修正
.text [iexpression] という文がプログラム内で複数あると
正常にアセンブルできないというバグがあったのを直しました.
これにより以下のように同じアドレス上にあるコードを一度に
アセンブルすることができるようになりました. これによって
オーバーレイモジュールの作成が簡単になります.
.text 0x1000
[CODE A]
.text 0x1000
[CODE B]
o @codecount ラベルの追加
これはラベルが置かれている位置の直前までにアセンブルした
命令の通算バイト数が保持されています.
以下のような場合, numA,B,C にはそれぞれ 4,12,16 が定義されます.
.text 0x1000 <---- ファイルの先頭
nop
.symbol numA, @codecount
nop
nop
.symbol numB, @codecount
.text 0x1200
nop
.symbol numC, @codecount
Text 領域のみで @codecount は使用可能です.
o .byte "STRING" のサポート
.byte "文字列" という表現を可能にしました.
この場合, 文字列として使用可能なのは改行(\n)タブ(\t) と表示可能
な文字のみです. \f,\b,\0 などの表現はできません.
また文字列の最後に \0 はつきません. もし \0 を追加したい場合は,
以下のように 2 文に分けてください.
.byte "ABCDEF"
.byte 0
o ベクトルレジスタのロードストアにおけるオフセット値のチェックの追加
lqv, slv などのベクトルレジスタのロードストア命令において,
そのオフセットには制限がありましたが (7bit 表現) 従来の rspasm
ではその制限を超えた場合の警告がありませんでした.
これを追加し, 7bit 表現を超えた場合は警告を出すようにしました.
またアラインメントについても警告を出します.
o _RSPASM_VERSION マクロ値の追加
アセンブルの前のプリプロセッサ処理時において, マクロ
_RSPASM_VERSION の値を参照することで現在の rspasm のバージョン
情報を知ることができるようになりました.
rspasm 2.2 のバージョン情報として設定されている本マクロの値は
220 です. ソースファイルに以下のように記述することでアセンブラ
のバージョン違いによる不都合を警告することができます.
|
|#if ((!defined(_RSPASM_VERSION))||_RSPASM_VERSION<220)
|● This Code must be complied with RSPASM version 2.20 or later. ●
|#endif
|
o .bound のバグの修正
.bound をテキスト領域で使用するとうまく動作しなかったのを修正
しました.
==============================================================================