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

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

يأخذ التابع disassemble الوسيط 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‎

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

أمثلة

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

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

انظر أيضا

  • التابع disasm: يأخذ الكائن body ، الذي يمكن أن يكون من النوع (Method) أو من النوع Proc ، ويعيد سلسلة نصية (String) تحتوي body على هيئة تعليمات قابلة للقراءة.
  • التابع each_child: يًكرّر (Iterate) على جميع سلاسل التعليمات (ككك) المنحدرة مباشرة من ككك . ترتيب التكرار يتعلق بطريقة التقديم (implementation) وبالإصدار، لذلك عليك ألا تعوّل على ترتيب معين.

مصادر