cross platform X68000 disassembler (Human68k, Windows, Linux)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

tablefile.5 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  2. ソースコードジェネレータ テーブルファイル書式
  3. ────────────────────────────────────
  4. '#'、'*'、';' から始まる行はコメント行。
  5. テーブル開始アドレス
  6. 識別子 [オペランド表現式]
  7. ...
  8. テーブル終了マーク
  9. ・テーブル開始アドレス
  10. 行頭から 16 進数でテーブルの開始アドレスを記述する。
  11. '$'や'0x'などは付けない。
  12. テーブルが記述できるのはテキスト・データセクション及び、限定的で
  13. はあるが BSS 内である。
  14. ・識別子
  15. 次のいずれか。
  16. dc.b 1 バイトのデータを .dc.b で出力する。
  17. dc.w 1 ワードのデータを .dc.w で出力する。
  18. dc.l 1 ロングワードのデータを .dc.l で出力する。
  19. dc.s 単精度実数を .dc.s で出力する。
  20. dc.d 倍精度実数を .dc.d で出力する。
  21. dc.x 拡張精度実数を .dc.x で出力する。
  22. dc.p パックドデシマル実数を .dc.p で出力する。
  23. 上記の命令は、オペランド表現式があればその式を、なければ pc(に相
  24. 当するアドレス)の示す値の出力する。識別子の先頭に'.'を記述しても
  25. よい。
  26. 奇数アドレスに dc.w 以降の命令を置くことは可能だが、警告が表示さ
  27. れる。
  28. byte[式] (式)バイトのバイト列を .dc.b で出力する。
  29. asciiz 0 で終わる文字列を .dc.b で出力する。
  30. lascii 文字数 + 文字列を .dc.b で出力する。
  31. SX-Window で用いられる形式。
  32. ascii[式] (式)バイトの文字列を .dc.b で出力する。
  33. even .even 疑似命令を出力する。
  34. cr 改行する。
  35. break 式 式の値が真(0 以外)ならテーブルを終了する。
  36. byte、ascii、break 以外の識別子の後に [式] を付けた場合、式の値
  37. だけ識別子を繰り返す。
  38. ・オペランド表現式
  39. 式または文字列。','で区切って複数の式または文字列を続けて記述す
  40. ることも出来る。
  41. 式を { } で囲むと、式をアドレスと見なしてそのアドレスのラベルを
  42. 生成する。ソースコードには L?????? の形式、またはシンボル名に置
  43. 換されて出力される。{ } で囲まない場合は数値として $?????? の形
  44. 式で出力される。
  45. 文字列はそのまま出力される。
  46. 例)
  47. .dc.w {peek.w(pc)+tabletop},"-",{tabletop}
  48. .dc.w Lxxxxxx-Lyyyyyy
  49. オペランド表現式は、文字列(上記の例で言えば"-")を普通の演算子と
  50. 見なした時の値が peek.?(pc) にならなければならない。
  51. ・式
  52. 式は C 言語の演算子のサブセットが使用できる。
  53. 算術演算子
  54. + - * / %
  55. 論理演算子
  56. == != < <= > >= !
  57. その他 ( )
  58. 定数
  59. tabletop テーブルの先頭アドレス
  60. pc 注目中のアドレス
  61. 関数
  62. peek.b(式) 式のアドレスの指すバイト値
  63. *(unsigned char*)式
  64. peek.w(式) 式のアドレスの指すワード値
  65. *(unsigned short*)式
  66. peek.l(式) 式のアドレスの指すロングワード値
  67. *(unsigned long*)式
  68. ext.w(式) 式を signed char と見なし、unsigned
  69. short に符号拡張した値を返す
  70. (unsigned short)(signed char)式
  71. ext.l(式) 式を signed short と見なし、unsigned
  72. long に符号拡張した値を返す
  73. (unsigned long)(signed short)式
  74. 定数や関数の返値は全て unsigned long として扱われ、演算も
  75. unsigned long で行われる。よって、peek.?(x) < 0 は常に偽になる。
  76. 奇数アドレスからの peek.w()、peek.l() は可能だが警告が表示される。
  77. BSS に対して peek.?() を使用した場合、その値は 0 になる。
  78. 数は 10 進数と、'0x' または '$'から始まる 16 進数が使える。
  79. ・文字列
  80. "文字列" の形式で文字列を記述する。記号 '"' 自身や制御記号は含め
  81. ることは出来ない。
  82. ・テーブル終了マーク
  83. 行頭から、以下のいずれかを必ず一つ記述する。
  84. end 以上のテーブルが一つあることを指定する。
  85. end[数] 以上のテーブルが記述した数の分だけあることを指定
  86. する。数は 10 進数のみ。
  87. end[] 以上のテーブルが複数個あり、テーブルの数は dis
  88. に判断させることを指定する(break 文があればそれ
  89. も考慮する)。
  90. end[breakonly] 以上のテーブルが複数個あり、テーブルの数は break
  91. 文でのみ判断することを指定する。break 文を書かな
  92. いと止まらないので注意すること。
  93. テーブルの数が分かる時はなるべく end[数] を使う。end[] による自
  94. 動判断はテーブルの次のラベルのアドレスや、アドレスに依存している
  95. 値などを見て判断しているだけなので、間違えることがしばしばある。
  96. 特に文字列の自動認識時に不要なラベルを作ってしまい、それに引っ掛
  97. かることが多い。break 文を書いても break する前に dis が勝手にテ
  98. ーブルを終わらせてしまう時は end[breakonly] を使用する。
  99. ・正確な文法
  100. ソースコードの eval.y を参照すること。
  101. ────────────────────────────────────