tree-sitter-m68k
Version:
Motorola 68000 family assembly grammar for tree-sitter
175 lines (170 loc) • 4.15 kB
Plain Text
============================================
Macro args as operands
============================================
move \1,d1
move \@,d1
move \@@,d1
move \@!,d1
move \@?,d1
move \@@,d1
move \#,d1
move \?1,d1
move \.,d1
move \+,d1
move \-,d1
move \foo,d1
move \$foo,d1
(source_file
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list (macro_arg) (data_register)))
)
============================================
Interpolated symbols in operands
============================================
move d\1,d1
move \1+2,d1
move \11,d1
move f\@!oo,d1
move .\1,d1
(source_file
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list
(interpolated
(macro_arg))
(data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list
(binary_expression
left: (macro_arg)
operator: (operator)
right: (decimal_literal))
(data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list
(interpolated
(macro_arg))
(data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list
(interpolated
(macro_arg))
(data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list
(interpolated
(macro_arg))
(data_register)))
)
============================================
Macro symbols in labels
============================================
\@:
l\@:
CFX_\1FILL:
Color\<REPTN>:
\1foo:
foo\1:
foo\1bar:
foo\1bar\2:
(source_file
(label (macro_arg))
(label
(interpolated (macro_arg)))
(label
(interpolated (macro_arg)))
(label
(interpolated (macro_arg)))
(label
(interpolated (macro_arg)))
(label
(interpolated (macro_arg)))
(label
(interpolated (macro_arg)))
(label
(interpolated (macro_arg) (macro_arg)))
)
============================================
Macro symbols in mnemonic
============================================
\1.w d0,d1
foo\1bar.w d0,d1
(source_file
(macro_call
(macro_arg)
(symbol)
(argument_list
(data_register)
(data_register)))
(macro_call
(interpolated
(macro_arg))
(symbol)
(argument_list
(data_register)
(data_register)))
)
============================================
Macro symbols as size
============================================
move.\1 d0,d1
move 4.\1,d1
(source_file
(instruction
mnemonic: (instruction_mnemonic)
size: (macro_arg)
operands: (operand_list (data_register) (data_register)))
(instruction
mnemonic: (instruction_mnemonic)
operands: (operand_list
(absolute_value
value: (decimal_literal)
size: (macro_arg))
(data_register)))
)