التابع disasm‎ الخاص بالصنف InstructionSequence في روبي

من موسوعة حسوب
< Ruby‏ | InstructionSequence
مراجعة 21:43، 1 نوفمبر 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>disasm‎</code> الخاص بالصنف <code>InstructionSequence</code> في روبي}}</noinclude> تصنيف: Ruby...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

يأخذ التابع disasm الكائن body (انظر فقرة البنية العامة)، الذي يمكن أن يكون من النوع (Method) أو من النوع Proc ، ويعيد سلسلة نصية (String) تحتوي body على هيئة تعليمات قابلة للقراءة. بالنسبة لكائن Method:

الناتج:

== disasm: <RubyVM::InstructionSequence:hello@/tmp/method.rb>============
0000 trace            8                                               (   1)
0002 trace            1                                               (   2)
0004 putself
0005 putstring        "hello, world"
0007 send             :puts, 1, nil, 8, <ic:0>
0013 trace            16                                              (   3)
0015 leave                                                            (   2)

وبالنسبة لكائن Proc:

الناتج سيكون:

== disasm: <RubyVM::InstructionSequence:block in <main>@/tmp/proc.rb>===
== catch table
| catch type: redo   st: 0000 ed: 0012 sp: 0000 cont: 0000
| catch type: next   st: 0000 ed: 0012 sp: 0000 cont: 0012
|------------------------------------------------------------------------
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1] s1)
[ 2] num
0000 trace            1                                               (   1)
0002 putobject        1
0004 putobject        2
0006 opt_plus         <ic:1>
0008 dup
0009 setlocal         num, 0
0012 leave

البنية العامة

disasm(body)  str
disassemble(body)  str

المعاملات

body‎

القيمة المُعادة

أمثلة

مثال على استخدام التابع disasm‎:

# /tmp/method.rb
def hello
  puts "hello, world"
end
puts RubyVM::InstructionSequence.disasm(method(:hello))

انظر أيضا

  • التابع base_label: يُعيد التسمية الأساسية (base label) لككك التي .
  • التابع disassemble: يأخذ الوسيط body ، والذي سيكون إما كائنًا من النوع Method، أو من النوع Proc، ثم يُعيد سلسلة نصية (String) تحتوي body على هيئة تعليمات قابلة للقراءة.

مصادر