الفرق بين المراجعتين لصفحة: «Ruby/InstructionSequence/disassemble»
< Ruby | InstructionSequence
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
| سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: التابع <code>disassemble | <noinclude>{{DISPLAYTITLE: التابع <code>InstructionSequence.disassemble</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby InstructionSequence]] | [[تصنيف: Ruby InstructionSequence]] | ||
يأخذ التابع <code>disassemble</code> | يأخذ التابع <code>disassemble</code> المعامل <code>body</code>، والذي سيكون إما كائنًا من النوع <code>[[Ruby/Method|Method]]</code>، أو من النوع <code>[[Ruby/Proc|Proc]]</code>، ثم يُعيد سلسلة نصية تحوي هذا المعامل على هيئة تعليمات قابلة للقراءة. | ||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">disasm(body) → str | <syntaxhighlight lang="ruby">disasm(body) → str | ||
| سطر 9: | سطر 9: | ||
==المعاملات== | ==المعاملات== | ||
===<code>body</code>=== | ===<code>body</code>=== | ||
كائن. | كائن من النوع <code>[[Ruby/Method|Method]]</code> أو من النوع <code>[[Ruby/Proc|Proc]]</code>. | ||
==القيمة | ==القيمة المعادة== | ||
تعاد سلسلة نصية تحوي محتوى المعامل <code>body</code> على هيئة تعليمات قابلة للقراءة. | |||
==أمثلة== | ==أمثلة== | ||
مثال على استخدام التابع <code>disassemble</code> مع كائن من النوع <code>[[Ruby/Method|Method]]</code>:<syntaxhighlight lang="ruby"># /tmp/method.rb | مثال على استخدام التابع <code>disassemble</code> مع كائن من النوع <code>[[Ruby/Method|Method]]</code>:<syntaxhighlight lang="ruby"># /tmp/method.rb | ||
def hello | def hello | ||
puts "hello, world" | puts "hello, world" | ||
end | end | ||
puts RubyVM::InstructionSequence.disasm(method(:hello))</syntaxhighlight>الناتج سيكون:<syntaxhighlight lang=" | puts RubyVM::InstructionSequence.disasm(method(:hello))</syntaxhighlight>الناتج سيكون:<syntaxhighlight lang="text">== disasm: <RubyVM::InstructionSequence:hello@/tmp/method.rb>============ | ||
0000 trace 8 ( 1) | 0000 trace 8 ( 1) | ||
0002 trace 1 ( 2) | 0002 trace 1 ( 2) | ||
| سطر 28: | سطر 26: | ||
0007 send :puts, 1, nil, 8, <ic:0> | 0007 send :puts, 1, nil, 8, <ic:0> | ||
0013 trace 16 ( 3) | 0013 trace 16 ( 3) | ||
0015 leave ( 2)</syntaxhighlight> | 0015 leave ( 2)</syntaxhighlight>مثال على استخدام التابع <code>disassemble</code> مع تمرير كائن من النوع <code>[[Ruby/Proc|Proc]]</code> إليه:<syntaxhighlight lang="ruby"># /tmp/proc.rb | ||
مثال على استخدام التابع <code>disassemble</code>كائن <code>Proc</code>:<syntaxhighlight lang="ruby"># /tmp/proc.rb | |||
p = proc { num = 1 + 2 } | p = proc { num = 1 + 2 } | ||
puts RubyVM::InstructionSequence.disasm(p)</syntaxhighlight>الناتج:<syntaxhighlight lang=" | puts RubyVM::InstructionSequence.disasm(p)</syntaxhighlight>الناتج سيكون:<syntaxhighlight lang="text">== disasm: <RubyVM::InstructionSequence:block in <main>@/tmp/proc.rb>=== | ||
== catch table | == catch table | ||
| catch type: redo st: 0000 ed: 0012 sp: 0000 cont: 0000 | | catch type: redo st: 0000 ed: 0012 sp: 0000 cont: 0000 | ||
| سطر 48: | سطر 43: | ||
0012 leave</syntaxhighlight> | 0012 leave</syntaxhighlight> | ||
== انظر | == انظر أيضًا == | ||
*التابع <code>[[Ruby/InstructionSequence/disasm|disasm]]</code>: يأخذ | *التابع <code>[[Ruby/InstructionSequence/disasm|disasm]]</code>: يأخذ كائنًا يمكن أن يكون من النوع <code>[[Ruby/Method|Method]]</code> أو من النوع <code>[[Ruby/Proc|Proc]]</code> ويعيد سلسلة نصية تعليمات قابلة للقراءة لهذا المعامل المعطى. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/RubyVM/InstructionSequence.html#method-i-disassemble قسم | *[http://ruby-doc.org/core-2.5.1/RubyVM/InstructionSequence.html#method-i-disassemble قسم التابع disassemble في الصنف InstructionSequence في توثيق روبي الرسمي.] | ||
المراجعة الحالية بتاريخ 06:57، 4 ديسمبر 2018
يأخذ التابع disassemble المعامل body، والذي سيكون إما كائنًا من النوع Method، أو من النوع Proc، ثم يُعيد سلسلة نصية تحوي هذا المعامل على هيئة تعليمات قابلة للقراءة.
البنية العامة
disasm(body) → str
disassemble(body) → str
المعاملات
body
كائن من النوع Method أو من النوع Proc.
القيمة المعادة
تعاد سلسلة نصية تحوي محتوى المعامل 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: يأخذ كائنًا يمكن أن يكون من النوعMethodأو من النوعProcويعيد سلسلة نصية تعليمات قابلة للقراءة لهذا المعامل المعطى.