تابع النسخة disassemble
الخاص بالصنف InstructionSequence
في روبي
< Ruby | InstructionSequence
يأخذ التابع disassemble
الوسيط body
(انظر فقرة البنية العامة)، والذي سيكون إما كائنًا من النوع Method
، أو من النوع Proc
، ثم يُعيد سلسلة نصية تحتوي body
على هيئة تعليمات قابلة للقراءة.
البنية العامة
disasm(body) → str
disassemble(body) → str
المعاملات
body
كائن.
القيمة المُعادة
يُعيد سلسلة نصية تحتوي body
على هيئة تعليمات قابلة للقراءة.
أمثلة
المثال الأول
مثال على استخدام التابع disassemble
مع كائن من النوع Method
:
# /tmp/method.rb
def hello
puts "hello, world"
end
puts RubyVM::InstructionSequence.disasm(method(:hello))
الناتج سيكون:
== 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)
المثال الثاني
مثال على استخدام التابع disassemble
كائن Proc
:
# /tmp/proc.rb
p = proc { num = 1 + 2 }
puts RubyVM::InstructionSequence.disasm(p)
الناتج:
== 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
، الذي يمكن أن يكون من النوع (Method
) أو من النوعProc
، ويعيد سلسلة نصية (String
) تحتويbody
على هيئة تعليمات قابلة للقراءة.