[前][次][番号順一覧][スレッド一覧]

ruby-changes:49614

From: shyouhei <ko1@a...>
Date: Tue, 9 Jan 2018 22:30:35 +0900 (JST)
Subject: [ruby-changes:49614] shyouhei:r61730 (trunk): [ci skip] add comments about file format

shyouhei	2018-01-09 22:30:29 +0900 (Tue, 09 Jan 2018)

  New Revision: 61730

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=61730

  Log:
    [ci skip] add comments about file format

  Modified files:
    trunk/insns.def
Index: insns.def
===================================================================
--- insns.def	(revision 61729)
+++ insns.def	(revision 61730)
@@ -1,15 +1,49 @@ https://github.com/ruby/ruby/blob/trunk/insns.def#L1
-/** ##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 */

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]