зеркало из https://github.com/github/ruby.git
[ci skip] add comments about file format (2nd try)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61783 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
e2b7cb9d32
Коммит
9456f88f00
42
insns.def
42
insns.def
|
@ -1,15 +1,49 @@
|
||||||
/** ##skip -*- mode:c; style:ruby; coding: utf-8 -*-
|
/* -*- mode:c; style:ruby; coding: utf-8 -*-
|
||||||
insns.def - YARV instruction definitions
|
insns.def - YARV instruction definitions
|
||||||
|
|
||||||
$Author: $
|
$Author: $
|
||||||
created at: 04/01/01 01:17:55 JST
|
created at: 04/01/01 01:17:55 JST
|
||||||
|
|
||||||
Copyright (C) 2004-2007 Koichi Sasada
|
Copyright (C) 2004-2007 Koichi Sasada
|
||||||
|
Massive rewrite by @shyouhei in 2017.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** ##skip
|
/* Some comments about this file's contents:
|
||||||
instruction comment
|
|
||||||
: english description
|
- 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 ..)
|
||||||
|
// 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 */
|
/* nop */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче