الفرق بين المراجعتين لصفحة: «Ruby/InstructionSequence/disasm i»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>disasm‎</code> الخاص بالصنف <code>InstructionSequence</code> في روبي}}</noinclude> تصنيف: Ruby...'
 
ط مراجعة وتدقيق.
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>disasm‎</code> الخاص بالصنف <code>InstructionSequence</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: التابع <code>InstructionSequence.disasm‎</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby InstructionSequence]]
[[تصنيف: Ruby InstructionSequence]]
يأخذ التابع <code>disasm</code> الكائن <code>body</code> (انظر فقرة البنية العامة)، الذي يمكن أن يكون من النوع (<code>[[Ruby/Method|Method]]</code>) أو من النوع <code>[[Ruby/Proc|Proc]]</code> ، ويعيد سلسلة نصية تحتوي <code>body</code> على هيئة تعليمات قابلة للقراءة.
يعيد تابع النسخة <code>disasm</code> [[Ruby/InstructionSequence|سلسلة التعليمات]] المعطاة على هيئة سلسلة نصية قابلة للقراءة.
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">disasm(body) → str
<syntaxhighlight lang="ruby">disasm → str</syntaxhighlight>
disassemble(body) → str‎</syntaxhighlight>
==القيمة المعادة==
==المعاملات==
تعاد [[Ruby/String|سلسلة نصية]] تحوي [[Ruby/InstructionSequence|سلسلة التعليمات]] بشكل قابل للقراءة.
===<code>body‎</code>===
كائن من النوع (<code>[[Ruby/Method|Method]]</code>) أو من النوع <code>[[Ruby/Proc|Proc]]</code>.
==القيمة المُعادة==
يعيد سلسلة نصية تحتوي <code>body</code> على هيئة تعليمات قابلة للقراءة.
==أمثلة==
==أمثلة==
===المثال الأول===
مثال على استخدام التابع <code>disasm‎:</code> <syntaxhighlight lang="ruby">puts RubyVM::InstructionSequence.compile('1 + 2').disasm
مثال على استخدام التابع <code>disasm‎</code> مع كائن <code>[[Ruby/Method|Method]]</code>:<syntaxhighlight lang="ruby"># /tmp/method.rb
</syntaxhighlight>الناتج سيكون:<syntaxhighlight lang="text">== disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>==========
def hello
  puts "hello, world"
end
 
puts RubyVM::InstructionSequence.disasm(method(:hello))</syntaxhighlight>الناتج سيكون:<syntaxhighlight lang="ruby">== 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)‎</syntaxhighlight>
 
=== المثال الثاني ===
مثال على استخدام التابع <code>disasm‎</code>مع كائن <code>Proc</code>:<syntaxhighlight lang="ruby"># /tmp/proc.rb
p = proc { num = 1 + 2 }
puts RubyVM::InstructionSequence.disasm(p)</syntaxhighlight>الناتج سيكون:<syntaxhighlight lang="ruby">== 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)
0000 trace            1                                              (  1)
0002 putobject        1
0002 putobject        1
0004 putobject        2
0004 putobject        2
0006 opt_plus        <ic:1>
0006 opt_plus        <ic:1>
0008 dup
0008 leave</syntaxhighlight>
0009 setlocal        num, 0
==انظر أيضًا==
0012 leave‎</syntaxhighlight>
*التابع <code>[[Ruby/InstructionSequence/disassemble i|disassemble]]</code>: يعيد [[Ruby/InstructionSequence|سلسلة التعليمات]] المعطاة على هيئة سلسلة نصية قابلة للقراءة.
==انظر أيضا==
*التابع <code>[[Ruby/InstructionSequence/disassemble|disassemble]]</code>: يأخذ  الوسيط <code>body</code> ، والذي سيكون إما كائنًا من النوع <code>[[Ruby/Method|Method]]</code>، أو من النوع <code>[[Ruby/Proc|Proc]]</code>، ثم يُعيد سلسلة نصية (<code>[[Ruby/String|String]]</code>) تحتوي <code>body</code> على هيئة تعليمات قابلة للقراءة.
==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/RubyVM/InstructionSequence.html#method-i-disasm قسم التابع disasm‎ في الصنف InstructionSequence‎ في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/RubyVM/InstructionSequence.html#method-i-disasm قسم التابع disasm‎ في الصنف InstructionSequence‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 07:58، 4 ديسمبر 2018

يعيد تابع النسخة disasm سلسلة التعليمات المعطاة على هيئة سلسلة نصية قابلة للقراءة.

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

disasm  str

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

تعاد سلسلة نصية تحوي سلسلة التعليمات بشكل قابل للقراءة.

أمثلة

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

puts RubyVM::InstructionSequence.compile('1 + 2').disasm

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

== disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>==========
0000 trace            1                                               (   1)
0002 putobject        1
0004 putobject        2
0006 opt_plus         <ic:1>
0008 leave

انظر أيضًا

مصادر