Sha256: 9de63c033a3072bd051aaf6a31aeffffac52a3b1a301f2d152ba386f8d7d7f07
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
require 'evoasm/test' require 'evoasm/x64/cpu_state' require 'evoasm/buffer' module Evoasm module X64 class CPUStateTest < Minitest::Test def setup @cpu_state = CPUState.new end def test_clean X64.registers.each do |reg| data = @cpu_state[reg] refute_empty data assert data.all? { |e| e == 0 } end end def test_set_get @cpu_state[:a] = 0xFF assert_equal [0xFF], @cpu_state[:a] @cpu_state[:b] = [0xDEADBEEF] assert_equal [0xDEADBEEF], @cpu_state[:b] # FIXME: with AVX512 the array # should be of size 8 data = (1..4).to_a @cpu_state[:xmm0] = data assert_equal data, @cpu_state[:xmm0] end def test_clone @cpu_state[:b] = 0xFAB cloned_cpu_state = @cpu_state.clone assert_equal [0xFAB], cloned_cpu_state[:b] end def test_emit_store buffer = Buffer.new 1024 Evoasm::X64.encode(:mov_rm32_imm32, {reg0: :a, imm0: 7}, buffer) @cpu_state.emit_store buffer Evoasm::X64.encode(:ret, {}, buffer) buffer.execute! assert_equal [7], @cpu_state[:a] end def test_emit_load buffer = Buffer.new 1024 @cpu_state[:a] = 0xABCD @cpu_state[:rflags] = [0x1] cpu_state_after = CPUState.new X64.emit_stack_frame buffer do @cpu_state.emit_load buffer cpu_state_after.emit_store buffer end #buffer.__log__ :warn buffer.execute! assert_equal [0xABCD], cpu_state_after[:a] assert_equal [0x1], cpu_state_after[:rflags] end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
evoasm-0.1.0.pre2 | test/unit/evoasm/x64/cpu_state_test.rb |