الفرق بين المراجعتين ل"Ruby/InstructionSequence/disassemble i"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: تابع النسخة <code>disassemble‎</code> الخاص بالصنف <code>InstructionSequence</code> في روبي}}</noinclude> تص...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby InstructionSequence]]
 
[[تصنيف: Ruby InstructionSequence]]
يأخذ التابع <code>disassemble</code> الوسيط <code>body</code> (انظر فقرة البنية العامة)، والذي سيكون إما كائنًا من النوع <code>[[Ruby/Method|Method]]</code>، أو من النوع <code>[[Ruby/Proc|Proc]]</code>، ثم يُعيد سلسلة نصية تحتوي <code>body</code> على هيئة تعليمات قابلة للقراءة.
+
يعيد تابع النسخة <code>disassemble</code> [[Ruby/InstructionSequence|سلسلة التعليمات]] على هيئة سلسلة نصية قابلة للقراءة.
 
==البنية العامة==
 
==البنية العامة==
<syntaxhighlight lang="ruby">disasm(body) → str
+
<syntaxhighlight lang="ruby">disassemble → str</syntaxhighlight>
disassemble(body) → str‎</syntaxhighlight>
 
==المعاملات==
 
===<code>body‎</code>===
 
كائن.
 
 
 
 
==القيمة المُعادة==
 
==القيمة المُعادة==
يُعيد سلسلة نصية تحتوي <code>body</code> على هيئة تعليمات قابلة للقراءة.
+
يعيد تابع النسخة <code>disassemble</code> [[Ruby/InstructionSequence|سلسلة التعليمات]]  على هيئة سلسلة نصية قابلة للقراءة.
  
 
==أمثلة==
 
==أمثلة==
 
+
مثال على استخدام التابع <code>disassemble‎:</code><syntaxhighlight lang="ruby">puts RubyVM::InstructionSequence.compile('1 + 2').disasm
=== المثال الأول ===
+
</syntaxhighlight>الناتج سيكون:<syntaxhighlight lang="ruby">== disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>==========
مثال على استخدام التابع <code>disassemble‎</code> مع كائن من النوع <code>[[Ruby/Method|Method]]</code>:<syntaxhighlight lang="ruby"># /tmp/method.rb
 
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>disassemble‎</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/disasm|disasm]]</code>: يأخذ  الكائن <code>body</code> ، الذي يمكن أن يكون من النوع (<code>[[Ruby/Method|Method]]</code>) أو من النوع <code>[[Ruby/Proc|Proc]]</code> ، ويعيد سلسلة نصية (<code>[[Ruby/String|String]]</code>) تحتوي <code>body</code> على هيئة تعليمات قابلة للقراءة.
+
*التابع <code>[[Ruby/InstructionSequence/disasm i|disasm]]</code>: يعيد تابع النسخة <code>disasm</code> [[Ruby/InstructionSequence|سلسلة التعليمات]] على هيئة سلسلة نصية قابلة للقراءة.
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/RubyVM/InstructionSequence.html#method-i-disassemble قسم  التابع disassemble‎ في الصنف InstructionSequence‎ في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/RubyVM/InstructionSequence.html#method-i-disassemble قسم  التابع disassemble‎ في الصنف InstructionSequence‎ في توثيق روبي الرسمي.]

مراجعة 22:16، 1 نوفمبر 2018

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

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

disassemble  str

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

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

أمثلة

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

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

انظر أيضا

مصادر