Stubbed out all WebAssembly instructions.
This commit is contained in:
parent
f5173e8f9e
commit
3658529772
188 changed files with 2213 additions and 24 deletions
|
@ -27,3 +27,6 @@ Metrics/BlockLength:
|
||||||
|
|
||||||
Style/Documentation:
|
Style/Documentation:
|
||||||
Enabled: false
|
Enabled: false
|
||||||
|
|
||||||
|
Style/OptionalArguments:
|
||||||
|
Enabled: false
|
||||||
|
|
17
lib/wag.rb
17
lib/wag.rb
|
@ -7,20 +7,29 @@ module WAG
|
||||||
# Your code goes here...
|
# Your code goes here...
|
||||||
|
|
||||||
require 'wag/wat'
|
require 'wag/wat'
|
||||||
|
require 'wag/inflector'
|
||||||
|
require 'wag/instructable'
|
||||||
|
|
||||||
require 'wag/data'
|
require 'wag/data'
|
||||||
require 'wag/function'
|
|
||||||
require 'wag/function_type'
|
|
||||||
require 'wag/global'
|
|
||||||
require 'wag/element'
|
require 'wag/element'
|
||||||
require 'wag/export'
|
require 'wag/export'
|
||||||
|
require 'wag/f32_instructions'
|
||||||
|
require 'wag/f64_instructions'
|
||||||
|
require 'wag/function_type'
|
||||||
|
require 'wag/function'
|
||||||
|
require 'wag/global'
|
||||||
|
require 'wag/global_instructions'
|
||||||
|
require 'wag/i32_instructions'
|
||||||
|
require 'wag/i64_instructions'
|
||||||
require 'wag/import'
|
require 'wag/import'
|
||||||
require 'wag/indices'
|
require 'wag/indices'
|
||||||
require 'wag/inflector'
|
|
||||||
require 'wag/instruction'
|
require 'wag/instruction'
|
||||||
require 'wag/label'
|
require 'wag/label'
|
||||||
|
require 'wag/local_instructions'
|
||||||
require 'wag/memory'
|
require 'wag/memory'
|
||||||
require 'wag/module'
|
require 'wag/module'
|
||||||
|
require 'wag/param'
|
||||||
|
require 'wag/result'
|
||||||
require 'wag/table'
|
require 'wag/table'
|
||||||
require 'wag/type'
|
require 'wag/type'
|
||||||
end
|
end
|
||||||
|
|
21
lib/wag/f32_instructions.rb
Normal file
21
lib/wag/f32_instructions.rb
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
class F32Instructions
|
||||||
|
def initialize(instructions)
|
||||||
|
@instructions = instructions
|
||||||
|
end
|
||||||
|
|
||||||
|
%i[load store const eq ne lt gt le ge abs neg ceil floor trunc nearest
|
||||||
|
sqrt add sub mul div min max copysign convert_i32_s convert_i32_u
|
||||||
|
convert_i64_s convert_i64_u reinterpret_i32].each do |instruction_name|
|
||||||
|
camelised_name = "F32#{WAG::Inflector.inflector.camelize(instruction_name)}"
|
||||||
|
define_method(instruction_name) do |*args, &block|
|
||||||
|
instruction = WAG::Instruction.get_const(camelised_name).new(*args)
|
||||||
|
@instructions << instruction
|
||||||
|
instruction.instance_exec(&block) if block
|
||||||
|
instruction
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
21
lib/wag/f64_instructions.rb
Normal file
21
lib/wag/f64_instructions.rb
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
class F64Instructions
|
||||||
|
def initialize(instructions)
|
||||||
|
@instructions = instructions
|
||||||
|
end
|
||||||
|
|
||||||
|
%i[load store const eq ne lt gt le ge abs neg ceil floor trunc nearest sqrt
|
||||||
|
add sub mul div min max copysign convert_i32_s convert_i32_u
|
||||||
|
convert_i64_s convert_i64_u promote_f32 reinterpret_i64].each do |instruction_name|
|
||||||
|
camelised_name = "F64#{WAG::Inflector.inflector.camelize(instruction_name)}"
|
||||||
|
define_method(instruction_name) do |*args, &block|
|
||||||
|
instruction = WAG::Instruction.get_const(camelised_name).new(*args)
|
||||||
|
@instructions << instruction
|
||||||
|
instruction.instance_exec(&block) if block
|
||||||
|
instruction
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -3,27 +3,29 @@
|
||||||
module WAG
|
module WAG
|
||||||
class Function
|
class Function
|
||||||
include WAG::WAT
|
include WAG::WAT
|
||||||
|
prepend WAG::Instructable
|
||||||
|
|
||||||
attr_reader :label, :params, :results
|
attr_reader :label, :params
|
||||||
|
|
||||||
def initialize(label)
|
def initialize(label)
|
||||||
@label = WAG::Label.from(label)
|
@label = WAG::Label.from(label)
|
||||||
@params = []
|
@params = []
|
||||||
@results = []
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def param(*types)
|
def param(label = nil, type)
|
||||||
@params.concat(types.map { |t| WAG::Type.from(t) })
|
@params.push(WAG::Param.new(type, label))
|
||||||
end
|
end
|
||||||
|
|
||||||
def result(*types)
|
def result(*types)
|
||||||
@results.concat(types.map { |t| WAG::Type.from(t) })
|
return @result if types.empty?
|
||||||
|
|
||||||
|
@result = WAG::Result.new(*types)
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_sexpr
|
def to_sexpr
|
||||||
[:func, @label.to_sexpr].tap do |func|
|
[:func, @label.to_sexpr].tap do |func|
|
||||||
func.push([:param].concat(@params.map(&:to_sexpr))) if @params
|
func.concat(@params.map(&:to_sexpr)) unless @params.empty?
|
||||||
func.push([:result].concat(@results.map(&:to_sexpr))) if @results
|
func.push(@result.to_sexpr) if @result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
19
lib/wag/global_instructions.rb
Normal file
19
lib/wag/global_instructions.rb
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
class GlobalInstructions
|
||||||
|
def initialize(instructions)
|
||||||
|
@instructions = instructions
|
||||||
|
end
|
||||||
|
|
||||||
|
%i[get set].each do |instruction_name|
|
||||||
|
camelised_name = "Global#{WAG::Inflector.inflector.camelize(instruction_name)}"
|
||||||
|
define_method(instruction_name) do |*args, &block|
|
||||||
|
instruction = WAG::Instruction.get_const(camelised_name).new(*args)
|
||||||
|
@instructions << instruction
|
||||||
|
instruction.instance_exec(&block) if block
|
||||||
|
instruction
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
22
lib/wag/i32_instructions.rb
Normal file
22
lib/wag/i32_instructions.rb
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
class I32Instructions
|
||||||
|
def initialize(instructions)
|
||||||
|
@instructions = instructions
|
||||||
|
end
|
||||||
|
|
||||||
|
%i[load load8_s load8_u load16_s load16_u store store8 store16 const eqz eq
|
||||||
|
ne lt_s lt_u gt_s gt_u le_s le_u ge_s ge_u clz ctz popcnt add sub mul
|
||||||
|
div_s div_u rem_s rem_u and or xor shl shr_s shr_u rotl rotr trunc_f32_s
|
||||||
|
trunc_f32_u trunc_f64_s trunc_f64_u reinterpret_f32].each do |instruction_name|
|
||||||
|
camelised_name = "I32#{WAG::Inflector.inflector.camelize(instruction_name)}"
|
||||||
|
define_method(instruction_name) do |*args, &block|
|
||||||
|
instruction = WAG::Instruction.get_const(camelised_name).new(*args)
|
||||||
|
@instructions << instruction
|
||||||
|
instruction.instance_exec(&block) if block
|
||||||
|
instruction
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
23
lib/wag/i64_instructions.rb
Normal file
23
lib/wag/i64_instructions.rb
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
class I64Instructions
|
||||||
|
def initialize(instructions)
|
||||||
|
@instructions = instructions
|
||||||
|
end
|
||||||
|
|
||||||
|
%i[load load8_s load8_u load16_s load16_u load32_s load32_u store store8
|
||||||
|
store16 store32 const eqz eq ne lt_s lt_u gt_s gt_u le_s le_u ge_s ge_u
|
||||||
|
clz ctz popcnt add sub mul div_s div_u rem_s rem_u and or xor shl shr_s
|
||||||
|
shr_u rotl rotr extend_i13_s extend_i32_u trunc_f32_s trunc_f32_u
|
||||||
|
trunc_f64_s trunc_f64_u reinterpret_f64].each do |instruction_name|
|
||||||
|
camelised_name = "I32#{WAG::Inflector.inflector.camelize(instruction_name)}"
|
||||||
|
define_method(instruction_name) do |*args, &block|
|
||||||
|
instruction = WAG::Instruction.get_const(camelised_name).new(*args)
|
||||||
|
@instructions << instruction
|
||||||
|
instruction.instance_exec(&block) if block
|
||||||
|
instruction
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
43
lib/wag/instructable.rb
Normal file
43
lib/wag/instructable.rb
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instructable
|
||||||
|
# Define all the basic instructions.
|
||||||
|
%i[unreachable nop block loop if else end br br_if br_table return call
|
||||||
|
call_indirect drop select].each do |instruction_name|
|
||||||
|
camelised_name = WAG::Inflector.inflector.camelize(instruction_name)
|
||||||
|
define_method(instruction_name) do |*args, &block|
|
||||||
|
instruction = WAG::Instruction.get_const(camelised_name).new(*args)
|
||||||
|
instructions << instruction
|
||||||
|
instruction.instance_exec(&block) if block
|
||||||
|
instruction
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def local
|
||||||
|
WAG::LocalInstructions.new(instructions)
|
||||||
|
end
|
||||||
|
|
||||||
|
def i32
|
||||||
|
WAG::I32Instructions.new(instructions)
|
||||||
|
end
|
||||||
|
|
||||||
|
def i64
|
||||||
|
WAG::I64Instructions.new(instructions)
|
||||||
|
end
|
||||||
|
|
||||||
|
def memory
|
||||||
|
WAG::MemoryInstructions.new(instructions)
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_sexpr
|
||||||
|
super().concat(instructions.map(&:to_sexpr))
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def instructions
|
||||||
|
@instructions ||= []
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,19 +1,192 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module WAG
|
module WAG
|
||||||
module Instruction
|
module Instruction # rubocop:disable Metrics/ModuleLength
|
||||||
require 'wag/instructions/base'
|
require 'wag/instructions/base'
|
||||||
|
|
||||||
require 'wag/instructions/block'
|
require 'wag/instructions/block'
|
||||||
|
require 'wag/instructions/br'
|
||||||
require 'wag/instructions/br_if'
|
require 'wag/instructions/br_if'
|
||||||
require 'wag/instructions/br_table'
|
require 'wag/instructions/br_table'
|
||||||
require 'wag/instructions/br'
|
require 'wag/instructions/call'
|
||||||
|
require 'wag/instructions/call_indirect'
|
||||||
|
require 'wag/instructions/drop'
|
||||||
require 'wag/instructions/else'
|
require 'wag/instructions/else'
|
||||||
require 'wag/instructions/end'
|
require 'wag/instructions/end'
|
||||||
require 'wag/instructions/if'
|
require 'wag/instructions/if'
|
||||||
require 'wag/instructions/loop'
|
require 'wag/instructions/loop'
|
||||||
require 'wag/instructions/nop'
|
require 'wag/instructions/nop'
|
||||||
require 'wag/instructions/return'
|
require 'wag/instructions/return'
|
||||||
|
require 'wag/instructions/select'
|
||||||
require 'wag/instructions/unreachable'
|
require 'wag/instructions/unreachable'
|
||||||
|
|
||||||
|
require 'wag/instructions/f32/base'
|
||||||
|
require 'wag/instructions/f32/abs'
|
||||||
|
require 'wag/instructions/f32/add'
|
||||||
|
require 'wag/instructions/f32/ceil'
|
||||||
|
require 'wag/instructions/f32/const'
|
||||||
|
require 'wag/instructions/f32/convert_i32_s'
|
||||||
|
require 'wag/instructions/f32/convert_i32_u'
|
||||||
|
require 'wag/instructions/f32/convert_i64_s'
|
||||||
|
require 'wag/instructions/f32/convert_i64_u'
|
||||||
|
require 'wag/instructions/f32/copysign'
|
||||||
|
require 'wag/instructions/f32/demote_f64'
|
||||||
|
require 'wag/instructions/f32/div'
|
||||||
|
require 'wag/instructions/f32/eq'
|
||||||
|
require 'wag/instructions/f32/floor'
|
||||||
|
require 'wag/instructions/f32/ge'
|
||||||
|
require 'wag/instructions/f32/gt'
|
||||||
|
require 'wag/instructions/f32/le'
|
||||||
|
require 'wag/instructions/f32/load'
|
||||||
|
require 'wag/instructions/f32/lt'
|
||||||
|
require 'wag/instructions/f32/max'
|
||||||
|
require 'wag/instructions/f32/min'
|
||||||
|
require 'wag/instructions/f32/mul'
|
||||||
|
require 'wag/instructions/f32/ne'
|
||||||
|
require 'wag/instructions/f32/nearest'
|
||||||
|
require 'wag/instructions/f32/neg'
|
||||||
|
require 'wag/instructions/f32/reinterpret_i32'
|
||||||
|
require 'wag/instructions/f32/sqrt'
|
||||||
|
require 'wag/instructions/f32/store'
|
||||||
|
require 'wag/instructions/f32/sub'
|
||||||
|
require 'wag/instructions/f32/trunc'
|
||||||
|
|
||||||
|
require 'wag/instructions/f64/base'
|
||||||
|
require 'wag/instructions/f64/abs'
|
||||||
|
require 'wag/instructions/f64/add'
|
||||||
|
require 'wag/instructions/f64/ceil'
|
||||||
|
require 'wag/instructions/f64/const'
|
||||||
|
require 'wag/instructions/f64/convert_i32_s'
|
||||||
|
require 'wag/instructions/f64/convert_i32_u'
|
||||||
|
require 'wag/instructions/f64/convert_i64_s'
|
||||||
|
require 'wag/instructions/f64/convert_i64_u'
|
||||||
|
require 'wag/instructions/f64/copysign'
|
||||||
|
require 'wag/instructions/f64/div'
|
||||||
|
require 'wag/instructions/f64/eq'
|
||||||
|
require 'wag/instructions/f64/floor'
|
||||||
|
require 'wag/instructions/f64/ge'
|
||||||
|
require 'wag/instructions/f64/gt'
|
||||||
|
require 'wag/instructions/f64/le'
|
||||||
|
require 'wag/instructions/f64/load'
|
||||||
|
require 'wag/instructions/f64/lt'
|
||||||
|
require 'wag/instructions/f64/max'
|
||||||
|
require 'wag/instructions/f64/min'
|
||||||
|
require 'wag/instructions/f64/mul'
|
||||||
|
require 'wag/instructions/f64/ne'
|
||||||
|
require 'wag/instructions/f64/nearest'
|
||||||
|
require 'wag/instructions/f64/neg'
|
||||||
|
require 'wag/instructions/f64/promote_f32'
|
||||||
|
require 'wag/instructions/f64/reinterpret_i64'
|
||||||
|
require 'wag/instructions/f64/sqrt'
|
||||||
|
require 'wag/instructions/f64/store'
|
||||||
|
require 'wag/instructions/f64/sub'
|
||||||
|
require 'wag/instructions/f64/trunc'
|
||||||
|
|
||||||
|
require 'wag/instructions/global/base'
|
||||||
|
require 'wag/instructions/global/get'
|
||||||
|
require 'wag/instructions/global/set'
|
||||||
|
|
||||||
|
require 'wag/instructions/i32/base'
|
||||||
|
require 'wag/instructions/i32/add'
|
||||||
|
require 'wag/instructions/i32/and'
|
||||||
|
require 'wag/instructions/i32/clz'
|
||||||
|
require 'wag/instructions/i32/const'
|
||||||
|
require 'wag/instructions/i32/ctz'
|
||||||
|
require 'wag/instructions/i32/div_s'
|
||||||
|
require 'wag/instructions/i32/div_u'
|
||||||
|
require 'wag/instructions/i32/eq'
|
||||||
|
require 'wag/instructions/i32/eqz'
|
||||||
|
require 'wag/instructions/i32/ge_s'
|
||||||
|
require 'wag/instructions/i32/ge_u'
|
||||||
|
require 'wag/instructions/i32/gt_s'
|
||||||
|
require 'wag/instructions/i32/gt_u'
|
||||||
|
require 'wag/instructions/i32/le_s'
|
||||||
|
require 'wag/instructions/i32/le_u'
|
||||||
|
require 'wag/instructions/i32/load'
|
||||||
|
require 'wag/instructions/i32/load16_s'
|
||||||
|
require 'wag/instructions/i32/load16_u'
|
||||||
|
require 'wag/instructions/i32/load8_s'
|
||||||
|
require 'wag/instructions/i32/load8_u'
|
||||||
|
require 'wag/instructions/i32/lt_s'
|
||||||
|
require 'wag/instructions/i32/lt_u'
|
||||||
|
require 'wag/instructions/i32/mul'
|
||||||
|
require 'wag/instructions/i32/ne'
|
||||||
|
require 'wag/instructions/i32/or'
|
||||||
|
require 'wag/instructions/i32/popcnt'
|
||||||
|
require 'wag/instructions/i32/reinterpret_f32'
|
||||||
|
require 'wag/instructions/i32/rem_s'
|
||||||
|
require 'wag/instructions/i32/rem_u'
|
||||||
|
require 'wag/instructions/i32/rotl'
|
||||||
|
require 'wag/instructions/i32/rotr'
|
||||||
|
require 'wag/instructions/i32/shl'
|
||||||
|
require 'wag/instructions/i32/shr_s'
|
||||||
|
require 'wag/instructions/i32/shr_u'
|
||||||
|
require 'wag/instructions/i32/store'
|
||||||
|
require 'wag/instructions/i32/store16'
|
||||||
|
require 'wag/instructions/i32/store8'
|
||||||
|
require 'wag/instructions/i32/sub'
|
||||||
|
require 'wag/instructions/i32/trunc_f32_s'
|
||||||
|
require 'wag/instructions/i32/trunc_f32_u'
|
||||||
|
require 'wag/instructions/i32/trunc_f64_s'
|
||||||
|
require 'wag/instructions/i32/trunc_f64_u'
|
||||||
|
require 'wag/instructions/i32/wrap_i64'
|
||||||
|
require 'wag/instructions/i32/xor'
|
||||||
|
|
||||||
|
require 'wag/instructions/i64/base'
|
||||||
|
require 'wag/instructions/i64/add'
|
||||||
|
require 'wag/instructions/i64/clz'
|
||||||
|
require 'wag/instructions/i64/const'
|
||||||
|
require 'wag/instructions/i64/ctz'
|
||||||
|
require 'wag/instructions/i64/div_s'
|
||||||
|
require 'wag/instructions/i64/div_u'
|
||||||
|
require 'wag/instructions/i64/eq'
|
||||||
|
require 'wag/instructions/i64/eqz'
|
||||||
|
require 'wag/instructions/i64/extend_i32_s'
|
||||||
|
require 'wag/instructions/i64/extend_i32_u'
|
||||||
|
require 'wag/instructions/i64/ge_s'
|
||||||
|
require 'wag/instructions/i64/ge_u'
|
||||||
|
require 'wag/instructions/i64/gt_s'
|
||||||
|
require 'wag/instructions/i64/gt_u'
|
||||||
|
require 'wag/instructions/i64/le_s'
|
||||||
|
require 'wag/instructions/i64/le_u'
|
||||||
|
require 'wag/instructions/i64/load'
|
||||||
|
require 'wag/instructions/i64/load16_s'
|
||||||
|
require 'wag/instructions/i64/load16_u'
|
||||||
|
require 'wag/instructions/i64/load32_s'
|
||||||
|
require 'wag/instructions/i64/load32_u'
|
||||||
|
require 'wag/instructions/i64/load8_s'
|
||||||
|
require 'wag/instructions/i64/load8_u'
|
||||||
|
require 'wag/instructions/i64/lt_s'
|
||||||
|
require 'wag/instructions/i64/lt_u'
|
||||||
|
require 'wag/instructions/i64/mul'
|
||||||
|
require 'wag/instructions/i64/ne'
|
||||||
|
require 'wag/instructions/i64/or'
|
||||||
|
require 'wag/instructions/i64/popcnt'
|
||||||
|
require 'wag/instructions/i64/reinterpret_f64'
|
||||||
|
require 'wag/instructions/i64/rem_s'
|
||||||
|
require 'wag/instructions/i64/rem_u'
|
||||||
|
require 'wag/instructions/i64/rotl'
|
||||||
|
require 'wag/instructions/i64/rotr'
|
||||||
|
require 'wag/instructions/i64/shl'
|
||||||
|
require 'wag/instructions/i64/shr_s'
|
||||||
|
require 'wag/instructions/i64/shr_u'
|
||||||
|
require 'wag/instructions/i64/store'
|
||||||
|
require 'wag/instructions/i64/store16'
|
||||||
|
require 'wag/instructions/i64/store32'
|
||||||
|
require 'wag/instructions/i64/store8'
|
||||||
|
require 'wag/instructions/i64/sub'
|
||||||
|
require 'wag/instructions/i64/trunc_f32_s'
|
||||||
|
require 'wag/instructions/i64/trunc_f32_u'
|
||||||
|
require 'wag/instructions/i64/trunc_f64_s'
|
||||||
|
require 'wag/instructions/i64/trunc_f64_u'
|
||||||
|
require 'wag/instructions/i64/xor'
|
||||||
|
|
||||||
|
require 'wag/instructions/local/base'
|
||||||
|
require 'wag/instructions/local/get'
|
||||||
|
require 'wag/instructions/local/set'
|
||||||
|
require 'wag/instructions/local/tee'
|
||||||
|
|
||||||
|
require 'wag/instructions/memory/base'
|
||||||
|
require 'wag/instructions/memory/grow'
|
||||||
|
require 'wag/instructions/memory/size'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,6 +4,7 @@ module WAG
|
||||||
module Instruction
|
module Instruction
|
||||||
class Base
|
class Base
|
||||||
include WAG::WAT
|
include WAG::WAT
|
||||||
|
prepend WAG::Instructable
|
||||||
|
|
||||||
def self.instruction(op_code)
|
def self.instruction(op_code)
|
||||||
klass = Class.new(WAG::Instruction::Base)
|
klass = Class.new(WAG::Instruction::Base)
|
||||||
|
|
|
@ -3,6 +3,17 @@
|
||||||
module WAG
|
module WAG
|
||||||
module Instruction
|
module Instruction
|
||||||
class Block < Base.instruction(0x02)
|
class Block < Base.instruction(0x02)
|
||||||
|
def result(*types)
|
||||||
|
return @result if types.empty?
|
||||||
|
|
||||||
|
@result = WAG::Result.new(*types)
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_sexpr
|
||||||
|
[:block].tap do |expr|
|
||||||
|
expr << @result.to_sexpr if @result
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
8
lib/wag/instructions/call.rb
Normal file
8
lib/wag/instructions/call.rb
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
class Call < Base.instruction(0x10)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
8
lib/wag/instructions/call_indirect.rb
Normal file
8
lib/wag/instructions/call_indirect.rb
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
class CallIndirect < Base.instruction(0x11)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
8
lib/wag/instructions/drop.rb
Normal file
8
lib/wag/instructions/drop.rb
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
class Drop < Base.instruction(0x1a)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/abs.rb
Normal file
10
lib/wag/instructions/f32/abs.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Abs < Base.instruction(0x8b)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/add.rb
Normal file
10
lib/wag/instructions/f32/add.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Add < Base.instruction(0x92)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
13
lib/wag/instructions/f32/base.rb
Normal file
13
lib/wag/instructions/f32/base.rb
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Base < WAG::Instruction::Base
|
||||||
|
def name
|
||||||
|
"f32.#{super()}".to_sym
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/ceil.rb
Normal file
10
lib/wag/instructions/f32/ceil.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Ceil < Base.instruction(0x8d)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
19
lib/wag/instructions/f32/const.rb
Normal file
19
lib/wag/instructions/f32/const.rb
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Const < Base.instruction(0x43)
|
||||||
|
attr_reader :literal
|
||||||
|
|
||||||
|
def initialize(literal)
|
||||||
|
@literal = literal.to_f
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_sexpr
|
||||||
|
[name, @literal]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/convert_i32_s.rb
Normal file
10
lib/wag/instructions/f32/convert_i32_s.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class ConvertI32S < Base.instruction(0xb2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/convert_i32_u.rb
Normal file
10
lib/wag/instructions/f32/convert_i32_u.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class ConvertI32U < Base.instruction(0xb3)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/convert_i64_s.rb
Normal file
10
lib/wag/instructions/f32/convert_i64_s.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class ConvertI64S < Base.instruction(0xb4)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/convert_i64_u.rb
Normal file
10
lib/wag/instructions/f32/convert_i64_u.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class ConvertI64U < Base.instruction(0xb5)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/copysign.rb
Normal file
10
lib/wag/instructions/f32/copysign.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Copysign < Base.instruction(0x98)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/demote_f64.rb
Normal file
10
lib/wag/instructions/f32/demote_f64.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class DemoteF64 < Base.instruction(0xb6)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/div.rb
Normal file
10
lib/wag/instructions/f32/div.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Div < Base.instruction(0x95)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/eq.rb
Normal file
10
lib/wag/instructions/f32/eq.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Eq < Base.instruction(0x5b)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/floor.rb
Normal file
10
lib/wag/instructions/f32/floor.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Floor < Base.instruction(0x8e)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/ge.rb
Normal file
10
lib/wag/instructions/f32/ge.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Ge < Base.instruction(0x60)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/gt.rb
Normal file
10
lib/wag/instructions/f32/gt.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Gt < Base.instruction(0x5e)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/le.rb
Normal file
10
lib/wag/instructions/f32/le.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Le < Base.instruction(0x5f)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/load.rb
Normal file
10
lib/wag/instructions/f32/load.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Load < Base.instruction(0x2a)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/lt.rb
Normal file
10
lib/wag/instructions/f32/lt.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Lt < Base.instruction(0x5d)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/max.rb
Normal file
10
lib/wag/instructions/f32/max.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Max < Base.instruction(0x97)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/min.rb
Normal file
10
lib/wag/instructions/f32/min.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Min < Base.instruction(0x96)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/mul.rb
Normal file
10
lib/wag/instructions/f32/mul.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Mul < Base.instruction(0x94)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/ne.rb
Normal file
10
lib/wag/instructions/f32/ne.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Ne < Base.instruction(0x5c)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/nearest.rb
Normal file
10
lib/wag/instructions/f32/nearest.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Nearest < Base.instruction(0x90)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/neg.rb
Normal file
10
lib/wag/instructions/f32/neg.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Neg < Base.instruction(0x8c)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/reinterpret_i32.rb
Normal file
10
lib/wag/instructions/f32/reinterpret_i32.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class ReinterpretI32 < Base.instruction(0xbe)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/sqrt.rb
Normal file
10
lib/wag/instructions/f32/sqrt.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Sqrt < Base.instruction(0x91)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/store.rb
Normal file
10
lib/wag/instructions/f32/store.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Store < Base.instruction(0x38)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/sub.rb
Normal file
10
lib/wag/instructions/f32/sub.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Sub < Base.instruction(0x93)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f32/trunc.rb
Normal file
10
lib/wag/instructions/f32/trunc.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F32
|
||||||
|
class Trunc < Base.instruction(0x8f)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/abs.rb
Normal file
10
lib/wag/instructions/f64/abs.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Abs < Base.instruction(0x99)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/add.rb
Normal file
10
lib/wag/instructions/f64/add.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Add < Base.instruction(0xa0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
13
lib/wag/instructions/f64/base.rb
Normal file
13
lib/wag/instructions/f64/base.rb
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Base < WAG::Instruction::Base
|
||||||
|
def name
|
||||||
|
"f64.#{super()}".to_sym
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/ceil.rb
Normal file
10
lib/wag/instructions/f64/ceil.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Ceil < Base.instruction(0x9b)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
19
lib/wag/instructions/f64/const.rb
Normal file
19
lib/wag/instructions/f64/const.rb
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Const < Base.instruction(0x44)
|
||||||
|
attr_reader :literal
|
||||||
|
|
||||||
|
def initialize(literal)
|
||||||
|
@literal = literal.to_f
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_sexpr
|
||||||
|
[name, @literal]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/convert_i32_s.rb
Normal file
10
lib/wag/instructions/f64/convert_i32_s.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class ConvertI32S < Base.instruction(0xb7)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/convert_i32_u.rb
Normal file
10
lib/wag/instructions/f64/convert_i32_u.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class ConvertI32U < Base.instruction(0xb8)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/convert_i64_s.rb
Normal file
10
lib/wag/instructions/f64/convert_i64_s.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class ConvertI64S < Base.instruction(0xb9)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/convert_i64_u.rb
Normal file
10
lib/wag/instructions/f64/convert_i64_u.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class ConvertI64U < Base.instruction(0xba)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/copysign.rb
Normal file
10
lib/wag/instructions/f64/copysign.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Copysign < Base.instruction(0xa6)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/div.rb
Normal file
10
lib/wag/instructions/f64/div.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Div < Base.instruction(0xa3)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/eq.rb
Normal file
10
lib/wag/instructions/f64/eq.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Eq < Base.instruction(0x61)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/floor.rb
Normal file
10
lib/wag/instructions/f64/floor.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Floor < Base.instruction(0x9c)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/ge.rb
Normal file
10
lib/wag/instructions/f64/ge.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Ge < Base.instruction(0x66)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/gt.rb
Normal file
10
lib/wag/instructions/f64/gt.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Gt < Base.instruction(0x64)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/le.rb
Normal file
10
lib/wag/instructions/f64/le.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Le < Base.instruction(0x65)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/load.rb
Normal file
10
lib/wag/instructions/f64/load.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Load < Base.instruction(0x2b)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/lt.rb
Normal file
10
lib/wag/instructions/f64/lt.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Lt < Base.instruction(0x63)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/max.rb
Normal file
10
lib/wag/instructions/f64/max.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Max < Base.instruction(0xa5)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/min.rb
Normal file
10
lib/wag/instructions/f64/min.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Min < Base.instruction(0xa4)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/mul.rb
Normal file
10
lib/wag/instructions/f64/mul.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Mul < Base.instruction(0xa2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/ne.rb
Normal file
10
lib/wag/instructions/f64/ne.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Ne < Base.instruction(0x62)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/nearest.rb
Normal file
10
lib/wag/instructions/f64/nearest.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Nearest < Base.instruction(0x9e)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/neg.rb
Normal file
10
lib/wag/instructions/f64/neg.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Neg < Base.instruction(0x9a)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/promote_f32.rb
Normal file
10
lib/wag/instructions/f64/promote_f32.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class PromoteF32 < Base.instruction(0xbb)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/reinterpret_i64.rb
Normal file
10
lib/wag/instructions/f64/reinterpret_i64.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class ReinterpretI64 < Base.instruction(0xbf)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/sqrt.rb
Normal file
10
lib/wag/instructions/f64/sqrt.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Sqrt < Base.instruction(0x9f)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/store.rb
Normal file
10
lib/wag/instructions/f64/store.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Store < Base.instruction(0x39)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/sub.rb
Normal file
10
lib/wag/instructions/f64/sub.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Sub < Base.instruction(0xa1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/f64/trunc.rb
Normal file
10
lib/wag/instructions/f64/trunc.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module F64
|
||||||
|
class Trunc < Base.instruction(0x9d)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
13
lib/wag/instructions/global/base.rb
Normal file
13
lib/wag/instructions/global/base.rb
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module Global
|
||||||
|
class Base < WAG::Instruction::Base
|
||||||
|
def name
|
||||||
|
"global.#{super()}".to_sym
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
19
lib/wag/instructions/global/get.rb
Normal file
19
lib/wag/instructions/global/get.rb
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module Global
|
||||||
|
class Get < Base.instruction(0x23)
|
||||||
|
attr_reader :label
|
||||||
|
|
||||||
|
def initialize(label)
|
||||||
|
@label = WAG::Label.from(label)
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_sexpr
|
||||||
|
[name, label.to_sexpr]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
19
lib/wag/instructions/global/set.rb
Normal file
19
lib/wag/instructions/global/set.rb
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module Global
|
||||||
|
class Set < Base.instruction(0x24)
|
||||||
|
attr_reader :label
|
||||||
|
|
||||||
|
def initialize(label)
|
||||||
|
@label = WAG::Label.from(label)
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_sexpr
|
||||||
|
[name, label.to_sexpr]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/add.rb
Normal file
10
lib/wag/instructions/i32/add.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class Add < Base.instruction(0x6a)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/and.rb
Normal file
10
lib/wag/instructions/i32/and.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class And < Base.instruction(0x71)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
13
lib/wag/instructions/i32/base.rb
Normal file
13
lib/wag/instructions/i32/base.rb
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class Base < WAG::Instruction::Base
|
||||||
|
def name
|
||||||
|
"i32.#{super()}".to_sym
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/clz.rb
Normal file
10
lib/wag/instructions/i32/clz.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class Clz < Base.instruction(0x67)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
19
lib/wag/instructions/i32/const.rb
Normal file
19
lib/wag/instructions/i32/const.rb
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class Const < Base.instruction(0x41)
|
||||||
|
attr_reader :literal
|
||||||
|
|
||||||
|
def initialize(literal)
|
||||||
|
@literal = literal.to_i
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_sexpr
|
||||||
|
[name, @literal]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/ctz.rb
Normal file
10
lib/wag/instructions/i32/ctz.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class Ctz < Base.instruction(0x68)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/div_s.rb
Normal file
10
lib/wag/instructions/i32/div_s.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class DivS < Base.instruction(0x6d)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/div_u.rb
Normal file
10
lib/wag/instructions/i32/div_u.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class DivU < Base.instruction(0x6e)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/eq.rb
Normal file
10
lib/wag/instructions/i32/eq.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class Eq < Base.instruction(0x46)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/eqz.rb
Normal file
10
lib/wag/instructions/i32/eqz.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class Eqz < Base.instruction(0x45)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/ge_s.rb
Normal file
10
lib/wag/instructions/i32/ge_s.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class GeS < Base.instruction(0x4e)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/ge_u.rb
Normal file
10
lib/wag/instructions/i32/ge_u.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class GeU < Base.instruction(0x4f)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/gt_s.rb
Normal file
10
lib/wag/instructions/i32/gt_s.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class GtS < Base.instruction(0x4a)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/gt_u.rb
Normal file
10
lib/wag/instructions/i32/gt_u.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class GtU < Base.instruction(0x4b)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/le_s.rb
Normal file
10
lib/wag/instructions/i32/le_s.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class LeS < Base.instruction(0x4c)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/le_u.rb
Normal file
10
lib/wag/instructions/i32/le_u.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class LeU < Base.instruction(0x4d)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/load.rb
Normal file
10
lib/wag/instructions/i32/load.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class Load < Base.instruction(0x28)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/load16_s.rb
Normal file
10
lib/wag/instructions/i32/load16_s.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class Load16S < Base.instruction(0x2e)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/load16_u.rb
Normal file
10
lib/wag/instructions/i32/load16_u.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class Load16U < Base.instruction(0x2f)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/load8_s.rb
Normal file
10
lib/wag/instructions/i32/load8_s.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class Load8S < Base.instruction(0x2c)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/load8_u.rb
Normal file
10
lib/wag/instructions/i32/load8_u.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class Load8U < Base.instruction(0x2d)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
lib/wag/instructions/i32/lt_s.rb
Normal file
10
lib/wag/instructions/i32/lt_s.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module WAG
|
||||||
|
module Instruction
|
||||||
|
module I32
|
||||||
|
class LtS < Base.instruction(0x48)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue