diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-09 13:30:29 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-09 13:30:29 +0000 |
commit | 310be7547df8ba20b6c511894b9c2d70f24da824 (patch) | |
tree | 3b9917126e8915198d10f17e13942baf1621287f /insns.def | |
parent | 89df12d849f4a7d2c78f61251b45fd4b94d41bc2 (diff) | |
download | ruby-310be7547df8ba20b6c511894b9c2d70f24da824.tar.gz |
[ci skip] add comments about file format
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61730 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r-- | insns.def | 42 |
1 files changed, 38 insertions, 4 deletions
@@ -1,15 +1,49 @@ -/** ##skip -*- mode:c; style:ruby; coding: utf-8 -*- +/* -*- mode:c; style:ruby; coding: utf-8 -*- insns.def - YARV instruction definitions $Author: $ created at: 04/01/01 01:17:55 JST Copyright (C) 2004-2007 Koichi Sasada + Massive rewtite by @shyouhei in 2017. */ -/** ##skip - instruction comment - : english description +/* Some comments about this file's contents: + + - The new format aims to be editable by C editor of your choice; + your mileage might vary of course. + + - Each instructions are in following format: + + DEFINE_INSN + instruction_name + (type operand, type operand, ..) + (pop_values, ..) + (return values ..) + #pragma attr type name contents.. + { + .. // insn body + } + + - Unlike the old format which was line-oriented, you can now place + newlines and comments at liberal positions. + + - `DEFINE_INSN` is a keyword. + + - An instruction name must be a valid C identifier. + + - Operands, pop values, return values are series of either variable + declarations, keyword `void`, or keyword `...`. They are much + like C function declarations. + + - Attribute pragmas are optional, and can include arbitrary C + expressions. You can write anything there but as of writing, + attribute named sp_inc is supported. + + - Attributes can access operands, but not stack (push/pop) variables. + + - An instruction's body is a pure C block, copied verbatimly into + the generated C source code. */ /* nop */ |