るりまサーチ

最速Rubyリファレンスマニュアル検索!
234件ヒット [1-100件を表示] (0.058秒)
トップページ > クエリ:>[x] > クラス:RubyVM::InstructionSequence[x]

別のキーワード

  1. _builtin >
  2. bigdecimal >
  3. float >
  4. module >
  5. complex >

ライブラリ

キーワード

検索結果

<< 1 2 3 > >>

RubyVM::InstructionSequence.of(body) -> RubyVM::InstructionSequence (179.0)

引数 body で指定した Proc、Method オブジェクトを元に RubyVM::InstructionSequence オブジェクトを作成して返します。

...
RubyVM::InstructionSequence
オブジェクトを作成して返します。

@param body Proc、Method オブジェクトを指定します。

例1:irb で実行した場合

# proc
>
p = proc { num = 1 + 2 }
>
RubyVM::InstructionSequence.of(p)
>
# => <RubyVM::InstructionSequence:block...
...in irb_binding@(irb)>

# method
>
def foo(bar); puts bar; end
>
RubyVM::InstructionSequence.of(method(:foo))
>
# => <RubyVM::InstructionSequence:foo@(irb)>

例2: RubyVM::InstructionSequence.compile_file を使用した場合

# /tmp/iseq_of.rb
def hello
puts "hello, world"
end...
...rb
>
require '/tmp/iseq_of.rb'

# hello メソッド
>
RubyVM::InstructionSequence.of(method(:hello))
>
# => #<RubyVM::InstructionSequence:0x007fb73d7cb1d0>

# グローバル proc
>
RubyVM::InstructionSequence.of($a_global_proc)
>
# => #<RubyVM::InstructionSequence:0x007fb73d7caf78>...
...irb
>
require '/tmp/iseq_of.rb'

# hello メソッド
>
RubyVM::InstructionSequence.of(method(:hello))
>
# => #<RubyVM::InstructionSequence:0x007fb73d7cb1d0>

# グローバル proc
>
RubyVM::InstructionSequence.of($a_global_proc)
>
# => #<RubyVM::InstructionSequence:0x007fb73d7caf78>...

RubyVM::InstructionSequence#absolute_path -> String | nil (113.0)

self が表す命令シーケンスの絶対パスを返します。

...iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
# => <RubyVM::InstructionSequence:<compiled>@<compiled>>
iseq.absolute_path
# => nil

例2: RubyVM::InstructionSequence.compile_file を使用した場合

# /tmp/method.rb
def hello
puts "hello, world"
end

# irb
>
iseq...
...= RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
>
iseq.absolute_path # => "/tmp/method.rb"

@see RubyVM::InstructionSequence#path...

RubyVM::InstructionSequence#base_label -> String (113.0)

self が表す命令シーケンスの基本ラベルを返します。

...eq = RubyVM::InstructionSequence.compile('num = 1 + 2')
# => <RubyVM::InstructionSequence:<compiled>@<compiled>>
iseq.base_label
# => "<compiled>"

例2: RubyVM::InstructionSequence.compile_file を使用した場合

# /tmp/method.rb
def hello
puts "hello, world"
end

# irb
>
is...
...eq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
>
iseq.base_label # => "<main>"

例3:

# /tmp/method2.rb
def hello
puts "hello, world"
end

RubyVM::InstructionSequence
.of(method(:hello)).base_label
# => "hello"

@see RubyVM::InstructionSequence#label...

RubyVM::InstructionSequence#label -> String (113.0)

self が表す命令シーケンスのラベルを返します。通常、メソッド名、クラス名、 モジュール名などで構成されます。

..."<main>" を返します。self を文字列から作成していた場合
は "<compiled>" を返します。

例1:irb で実行した場合

iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
# => <RubyVM::InstructionSequence:<compiled>@<compiled>>
iseq.label
# => "<compiled>"

...
...end

# irb
>
iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
>
iseq.label # => "<main>"

例3:

# /tmp/method2.rb
def hello
puts "hello, world"
end

RubyVM::InstructionSequence
.of(method(:hello)).label
# => "hello"

@see RubyVM::InstructionSequence#base_label...

RubyVM::InstructionSequence#path -> String (113.0)

self が表す命令シーケンスの相対パスを返します。

...ていた
場合は "<compiled>" を返します。

例1:irb で実行した場合

iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
# => <RubyVM::InstructionSequence:<compiled>@<compiled>>
iseq.path
# => "<compiled>"

例2: RubyVM::InstructionSequence.compile_file を使用した...
...場合

# /tmp/method.rb
def hello
puts "hello, world"
end

# irb
>
iseq = RubyVM::InstructionSequence.compile_file('method.rb')
>
iseq.path # => "method.rb"

@see RubyVM::InstructionSequence#absolute_path...

絞り込み条件を変える

RubyVM::InstructionSequence.disasm(body) -> String (113.0)

引数 body で指定したオブジェクトから作成した RubyVM::InstructionSequence オブジェクトを人間が読める形式の文字 列に変換して返します。

...引数 body で指定したオブジェクトから作成した
RubyVM::InstructionSequence
オブジェクトを人間が読める形式の文字
列に変換して返します。

@param body Proc、Method オブジェクトを指定します。

例1: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: 00...
...<ic:1>
0008 dup
0009 setlocal num, 0
0012 leave

例2:Method オブジェクトを指定した場合

# /tmp/method.rb
def hello
puts "hello, world"
end

puts RubyVM::InstructionSequence.disasm(method(:hello))

出力:

== disasm: <RubyVM::InstructionSequence:hello@/t...

RubyVM::InstructionSequence.disassemble(body) -> String (113.0)

引数 body で指定したオブジェクトから作成した RubyVM::InstructionSequence オブジェクトを人間が読める形式の文字 列に変換して返します。

...引数 body で指定したオブジェクトから作成した
RubyVM::InstructionSequence
オブジェクトを人間が読める形式の文字
列に変換して返します。

@param body Proc、Method オブジェクトを指定します。

例1: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: 00...
...<ic:1>
0008 dup
0009 setlocal num, 0
0012 leave

例2:Method オブジェクトを指定した場合

# /tmp/method.rb
def hello
puts "hello, world"
end

puts RubyVM::InstructionSequence.disasm(method(:hello))

出力:

== disasm: <RubyVM::InstructionSequence:hello@/t...

RubyVM::InstructionSequence#disasm -> String (107.0)

self が表す命令シーケンスを人間が読める形式の文字列に変換して返します。

...s 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

@see RubyVM::InstructionSequence.disasm...

RubyVM::InstructionSequence#disassemble -> String (107.0)

self が表す命令シーケンスを人間が読める形式の文字列に変換して返します。

...s 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

@see RubyVM::InstructionSequence.disasm...
<< 1 2 3 > >>