Skip to content

Latest commit

 

History

History
63 lines (44 loc) · 1.39 KB

spec.md

File metadata and controls

63 lines (44 loc) · 1.39 KB

Spec

  • TBD
<プログラム>::=<文>*
<文>::=<ニーモニック>|<コンフィグ>|<ラベル>|<変数宣言>

<ニーモニック>::=<オペコード> { <文字列リテラル> | <数字リテラル> | <16進数リテラル> | <ラベル> | <変数名> }*

<コンフィグ>::="[" <コンフィグ命令> <コンフィグ引数> "]"
<コンフィグ命令>::="BITS" | "INSTRSET" | "OPTIMIZE" | "FORMAT" | "PADDING" | "PADSET" | "OPTION" | "SECTION" | "ABSOLUTE" | "FILE"
<コンフィグ引数>::= <文字列リテラル> | <数字リテラル>

<ラベル>::=<文字>* ":"

<変数宣言>::=<変数名> "EQU" { <文字列リテラル> | <数字リテラル> | <16進数リテラル> }

<文字列リテラル>::="\"" <文字>* "\"
<数字リテラル>::=<数字>*
<16進数リテラル>::="0x" {<数字>|a-z|A-Z}*

<文字>::=a|b|...|z|A|B|...|Z|_|
<変数名>::=<文字>{<文字>}{<数字>}
<正数字>::=1|2|...|9
<数字>::=0|<正数字>

Sample

  • コメント, ;#
; comment
# comment
  • ラベル, 英数小文字とアンダーバーを許容
entry:
  • 文, ニーモニックは値を返したりしないのですべて文扱い
    • オペランドは複数の引数をとったりするだろう
DB  0x90
MOV  BX, 15
  • 変数(EQU)
BOTPAK  EQU  0x00280000
  • コンフィグ宣言
    • [... ""] の形で設定を追加する
[FORMAT "WCOFF"]