evoasm 0.0.2.pre7 → 0.1.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gdbinit +41 -0
- data/.gitignore +1 -2
- data/.gitmodules +3 -0
- data/.rubocop.yml +8 -0
- data/Gemfile +4 -0
- data/LICENSE.md +660 -0
- data/Makefile +1 -1
- data/README.md +17 -9
- data/Rakefile +39 -107
- data/bin/gdb +1 -1
- data/bin/gdb_loop +4 -0
- data/docs/FindingInstructions.md +17 -0
- data/docs/JIT.md +14 -0
- data/docs/SymbolicRegression.md +102 -0
- data/docs/Visualization.md +29 -0
- data/docs/examples/bit_insts.rb +44 -0
- data/docs/examples/jit.rb +26 -0
- data/docs/examples/loss.gif +0 -0
- data/docs/examples/program.png +0 -0
- data/docs/examples/sym_reg.rb +64 -0
- data/docs/examples/vis.rb +38 -0
- data/evoasm.gemspec +21 -15
- data/ext/evoasm_ext/Rakefile +3 -0
- data/ext/evoasm_ext/compile.rake +35 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-alloc.c +226 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-alloc.h +84 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-arch.c +52 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-arch.h +101 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-bitmap.h +158 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-buf.c +204 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-buf.h +109 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-domain.c +124 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-domain.h +279 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-error.c +65 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-error.h +108 -0
- data/ext/evoasm_ext/{evoasm-log.c → libevoasm/src/evoasm-log.c} +36 -18
- data/ext/evoasm_ext/libevoasm/src/evoasm-log.h +93 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-param.c +22 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-param.h +33 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-pop-params.c +192 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-pop-params.h +60 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-pop.c +1323 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-pop.h +107 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-program-io.c +116 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-program-io.h +60 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-program.c +1827 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-program.h +167 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-rand.c +65 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-rand.h +76 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-signal.c +106 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-signal.h +58 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-util.h +112 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-x64.c +925 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm-x64.h +277 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm.c +28 -0
- data/ext/evoasm_ext/libevoasm/src/evoasm.h +35 -0
- data/ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-enums.h +2077 -0
- data/ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-insts.c +191203 -0
- data/ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-insts.h +1713 -0
- data/ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-misc.c +348 -0
- data/ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-misc.h +93 -0
- data/ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-params.c +51 -0
- data/ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-params.h +509 -0
- data/lib/evoasm.rb +28 -11
- data/lib/evoasm/buffer.rb +105 -0
- data/lib/evoasm/capstone.rb +100 -0
- data/lib/evoasm/domain.rb +116 -0
- data/lib/evoasm/error.rb +37 -16
- data/lib/evoasm/exception_error.rb +19 -0
- data/lib/evoasm/ffi_ext.rb +53 -0
- data/lib/evoasm/libevoasm.rb +286 -0
- data/lib/evoasm/libevoasm/x64_enums.rb +1967 -0
- data/lib/evoasm/parameter.rb +20 -0
- data/lib/evoasm/population.rb +145 -0
- data/lib/evoasm/population/parameters.rb +227 -0
- data/lib/evoasm/population/plotter.rb +89 -0
- data/lib/evoasm/prng.rb +64 -0
- data/lib/evoasm/program.rb +195 -12
- data/lib/evoasm/program/io.rb +144 -0
- data/lib/evoasm/test.rb +8 -0
- data/lib/evoasm/version.rb +1 -1
- data/lib/evoasm/x64.rb +115 -0
- data/lib/evoasm/x64/cpu_state.rb +95 -0
- data/lib/evoasm/x64/instruction.rb +109 -0
- data/lib/evoasm/x64/operand.rb +156 -0
- data/lib/evoasm/x64/parameters.rb +211 -0
- data/test/helpers/population_helper.rb +128 -0
- data/test/helpers/test_helper.rb +1 -0
- data/test/helpers/x64_helper.rb +24 -0
- data/test/integration/bitwise_reverse_test.rb +41 -0
- data/test/integration/gcd_test.rb +52 -0
- data/test/integration/popcnt_test.rb +46 -0
- data/test/integration/sym_reg_test.rb +68 -0
- data/test/unit/evoasm/buffer_test.rb +48 -0
- data/test/unit/evoasm/capstone_test.rb +18 -0
- data/test/unit/evoasm/domain_test.rb +55 -0
- data/test/unit/evoasm/population/parameters_test.rb +106 -0
- data/test/unit/evoasm/population_test.rb +96 -0
- data/test/unit/evoasm/prng_test.rb +47 -0
- data/test/unit/evoasm/x64/cpu_state_test.rb +73 -0
- data/test/unit/evoasm/x64/encoding_test.rb +320 -0
- data/test/unit/evoasm/x64/instruction_access_test.rb +177 -0
- data/test/unit/evoasm/x64/instruction_encoding_test.rb +780 -0
- data/test/unit/evoasm/x64/instruction_test.rb +62 -0
- data/test/unit/evoasm/x64/parameters_test.rb +65 -0
- data/test/unit/evoasm/x64_test.rb +52 -0
- metadata +195 -89
- data/Gemfile.rake +0 -8
- data/Gemfile.rake.lock +0 -51
- data/LICENSE.txt +0 -373
- data/data/tables/README.md +0 -19
- data/data/tables/x64.csv +0 -1684
- data/data/templates/evoasm-x64.c.erb +0 -319
- data/data/templates/evoasm-x64.h.erb +0 -126
- data/examples/abs.yml +0 -20
- data/examples/popcnt.yml +0 -17
- data/examples/sym_reg.yml +0 -26
- data/exe/evoasm-search +0 -13
- data/ext/evoasm_ext/evoasm-alloc.c +0 -145
- data/ext/evoasm_ext/evoasm-alloc.h +0 -59
- data/ext/evoasm_ext/evoasm-arch.c +0 -44
- data/ext/evoasm_ext/evoasm-arch.h +0 -161
- data/ext/evoasm_ext/evoasm-bitmap.h +0 -114
- data/ext/evoasm_ext/evoasm-buf.c +0 -130
- data/ext/evoasm_ext/evoasm-buf.h +0 -47
- data/ext/evoasm_ext/evoasm-error.c +0 -31
- data/ext/evoasm_ext/evoasm-error.h +0 -75
- data/ext/evoasm_ext/evoasm-free-list.c.tmpl +0 -121
- data/ext/evoasm_ext/evoasm-free-list.h.tmpl +0 -86
- data/ext/evoasm_ext/evoasm-log.h +0 -69
- data/ext/evoasm_ext/evoasm-misc.c +0 -23
- data/ext/evoasm_ext/evoasm-misc.h +0 -282
- data/ext/evoasm_ext/evoasm-param.h +0 -37
- data/ext/evoasm_ext/evoasm-search.c +0 -2145
- data/ext/evoasm_ext/evoasm-search.h +0 -214
- data/ext/evoasm_ext/evoasm-util.h +0 -40
- data/ext/evoasm_ext/evoasm-x64.c +0 -275624
- data/ext/evoasm_ext/evoasm-x64.h +0 -5436
- data/ext/evoasm_ext/evoasm.c +0 -7
- data/ext/evoasm_ext/evoasm.h +0 -23
- data/ext/evoasm_ext/evoasm_ext.c +0 -1757
- data/ext/evoasm_ext/extconf.rb +0 -31
- data/lib/evoasm/cli.rb +0 -6
- data/lib/evoasm/cli/search.rb +0 -127
- data/lib/evoasm/core_ext.rb +0 -1
- data/lib/evoasm/core_ext/array.rb +0 -9
- data/lib/evoasm/core_ext/integer.rb +0 -10
- data/lib/evoasm/core_ext/kwstruct.rb +0 -13
- data/lib/evoasm/core_ext/range.rb +0 -5
- data/lib/evoasm/examples.rb +0 -27
- data/lib/evoasm/gen.rb +0 -8
- data/lib/evoasm/gen/enum.rb +0 -169
- data/lib/evoasm/gen/name_util.rb +0 -80
- data/lib/evoasm/gen/state.rb +0 -176
- data/lib/evoasm/gen/state_dsl.rb +0 -152
- data/lib/evoasm/gen/strio.rb +0 -27
- data/lib/evoasm/gen/translator.rb +0 -1102
- data/lib/evoasm/gen/version.rb +0 -5
- data/lib/evoasm/gen/x64.rb +0 -237
- data/lib/evoasm/gen/x64/funcs.rb +0 -495
- data/lib/evoasm/gen/x64/inst.rb +0 -781
- data/lib/evoasm/search.rb +0 -40
- data/lib/evoasm/tasks/gen_task.rb +0 -86
- data/lib/evoasm/tasks/template_task.rb +0 -52
- data/test/test_helper.rb +0 -1
- data/test/x64/test_helper.rb +0 -19
- data/test/x64/x64_test.rb +0 -87
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'evoasm/test'
|
2
|
+
require 'evoasm/x64'
|
3
|
+
|
4
|
+
module Evoasm
|
5
|
+
module X64
|
6
|
+
class InstructionTest < Minitest::Test
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@instruction_add = Evoasm::X64.instruction :add_rm64_imm8
|
10
|
+
@instruction_cmov = Evoasm::X64.instruction :cmovae_r64_rm64
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_name
|
14
|
+
assert_equal :add_rm64_imm8, @instruction_add.name
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_mnemonic
|
18
|
+
assert_equal 'ADD', @instruction_add.mnemonic
|
19
|
+
assert_equal 'CMOVAE', @instruction_cmov.mnemonic
|
20
|
+
assert_equal %w(CMOVAE CMOVNB CMOVNC), @instruction_cmov.mnemonics
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_operands
|
24
|
+
operands = @instruction_add.operands
|
25
|
+
|
26
|
+
assert_equal :rm, operands[0].type
|
27
|
+
assert operands[0].explicit?
|
28
|
+
assert_equal :gp, operands[0].register_type
|
29
|
+
assert_nil operands[0].register
|
30
|
+
assert_equal :reg0, operands[0].parameter.name
|
31
|
+
assert_equal 64, operands[0].size
|
32
|
+
|
33
|
+
assert_equal :imm, operands[1].type
|
34
|
+
assert operands[1].explicit?
|
35
|
+
assert_nil operands[1].register_type
|
36
|
+
assert_nil operands[1].register
|
37
|
+
assert_equal :imm0, operands[1].parameter.name
|
38
|
+
assert_equal 8, operands[1].size
|
39
|
+
|
40
|
+
refute_nil @instruction_add.parameters.find(operands[0].parameter)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_parameters
|
44
|
+
reg0_parameter = @instruction_add.parameters.find do |parameter|
|
45
|
+
parameter.name == :reg0
|
46
|
+
end
|
47
|
+
refute_nil reg0_parameter
|
48
|
+
|
49
|
+
imm_parameter = @instruction_add.parameters.find do |parameter|
|
50
|
+
parameter.name == :imm0
|
51
|
+
end
|
52
|
+
refute_nil imm_parameter
|
53
|
+
|
54
|
+
imm_domain = imm_parameter.domain
|
55
|
+
assert_kind_of Evoasm::Domain, imm_domain
|
56
|
+
assert_equal :int8, imm_domain.type
|
57
|
+
assert_equal 127, imm_domain.max
|
58
|
+
assert_equal -128, imm_domain.min
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'evoasm/test'
|
2
|
+
require 'evoasm/x64/cpu_state'
|
3
|
+
require 'evoasm/buffer'
|
4
|
+
|
5
|
+
module Evoasm
|
6
|
+
module X64
|
7
|
+
class ParametersTest < Minitest::Test
|
8
|
+
def setup
|
9
|
+
@parameters = Parameters.new
|
10
|
+
@basic_parameters = Parameters.new basic: true
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_basic
|
14
|
+
refute @parameters.basic?
|
15
|
+
assert @basic_parameters.basic?
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_register_parameter
|
19
|
+
@parameters[:reg0] = :a
|
20
|
+
assert_equal :a, @parameters[:reg0]
|
21
|
+
|
22
|
+
@basic_parameters[:reg0] = :a
|
23
|
+
assert_equal :a, @basic_parameters[:reg0]
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_boolean_parameter
|
27
|
+
@parameters[:force_long_vex?] = true
|
28
|
+
assert_equal true, @parameters[:force_long_vex?]
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_int_parameter
|
32
|
+
@parameters[:disp] = 10
|
33
|
+
assert_equal 10, @parameters[:disp]
|
34
|
+
|
35
|
+
assert_raises ArgumentError do
|
36
|
+
@parameters[:disp] = 10000000000000
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_scale_parameter
|
41
|
+
@parameters[:scale] = 4
|
42
|
+
assert_equal 4, @parameters[:scale]
|
43
|
+
|
44
|
+
assert_raises ArgumentError do
|
45
|
+
@parameters[:scale] = 5
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_addr_size_parameter
|
50
|
+
@parameters[:addr_size] = 32
|
51
|
+
assert_equal 32, @parameters[:addr_size]
|
52
|
+
|
53
|
+
assert_raises ArgumentError do
|
54
|
+
@parameters[:addr_size] = 2
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_invalid_parameter
|
59
|
+
assert_raises do
|
60
|
+
@parameters[:foo] = 42
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'evoasm/test'
|
2
|
+
|
3
|
+
Evoasm.log_level = :info
|
4
|
+
require 'evoasm/x64'
|
5
|
+
|
6
|
+
module Evoasm
|
7
|
+
class X64Test < Minitest::Test
|
8
|
+
self.make_my_diffs_pretty!
|
9
|
+
|
10
|
+
def test_features
|
11
|
+
features = Evoasm::X64.features
|
12
|
+
refute_empty features
|
13
|
+
assert features.all? { |feature, _| feature.is_a? Symbol }
|
14
|
+
|
15
|
+
if RUBY_PLATFORM =~ /linux/
|
16
|
+
cpu_info = File.read '/proc/cpuinfo'
|
17
|
+
|
18
|
+
feature_keys =[:cx8, :cmov, :mmx, :sse, :sse2, :pclmulqdq, :ssse3, :fma, :cx16, :sse4_1,
|
19
|
+
:sse4_2, :movbe, :popcnt, :aes, :avx, :f16c, :rdrand, :lahf_lm, :bmi1, :avx2, :bmi2]
|
20
|
+
|
21
|
+
cpu_info_features = feature_keys.map do |feature|
|
22
|
+
[feature, !!(cpu_info =~ /\b#{feature}\b/)]
|
23
|
+
end.sort.to_h
|
24
|
+
|
25
|
+
assert_equal cpu_info_features, features.sort.select { |feature, support| feature_keys.include? feature}.to_h
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_instructions
|
30
|
+
gp_insts = Evoasm::X64.instruction_names :gp, :rflags
|
31
|
+
refute_empty gp_insts
|
32
|
+
assert_includes gp_insts, :xor_rax_imm32
|
33
|
+
refute_includes gp_insts, :vfmadd213pd_xmm_xmm_xmmm128
|
34
|
+
refute_includes gp_insts, :cvtsd2si_r64_xmmm64
|
35
|
+
|
36
|
+
xmm_insts = Evoasm::X64.instruction_names :xmm
|
37
|
+
refute_empty xmm_insts
|
38
|
+
refute_includes xmm_insts, :jmp_rel32
|
39
|
+
refute_includes xmm_insts, :xor_rax_imm32
|
40
|
+
assert_includes xmm_insts, :vfmadd213pd_xmm_xmm_xmmm128
|
41
|
+
|
42
|
+
search_insts = Evoasm::X64.instruction_names :xmm, :gp, :rflags
|
43
|
+
assert_equal search_insts, Evoasm::X64.instruction_names(:xmm, :gp, :rflags, operand_types: [:reg, :imm, :rm])
|
44
|
+
refute_empty search_insts
|
45
|
+
refute_includes search_insts, :jmp_rel32
|
46
|
+
refute_includes search_insts, :call_rm32
|
47
|
+
assert_includes search_insts, :xor_rax_imm32
|
48
|
+
assert_includes search_insts, :vfmadd213pd_xmm_xmm_xmmm128
|
49
|
+
assert_empty search_insts.grep(/rdrand/)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
metadata
CHANGED
@@ -1,43 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evoasm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.1.0.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julian Aron Prenner (furunkel)
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: pastel
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.6'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
26
|
+
version: '0.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: ffi
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '1.9'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '1.9'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: gv
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: haml
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '4.0'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: bundler
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,132 +95,194 @@ dependencies:
|
|
67
95
|
- !ruby/object:Gem::Version
|
68
96
|
version: '10.0'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
98
|
+
name: rubocop
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
101
|
- - "~>"
|
74
102
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0.
|
103
|
+
version: '0.41'
|
76
104
|
type: :development
|
77
105
|
prerelease: false
|
78
106
|
version_requirements: !ruby/object:Gem::Requirement
|
79
107
|
requirements:
|
80
108
|
- - "~>"
|
81
109
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0.
|
110
|
+
version: '0.41'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
112
|
+
name: minitest
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
115
|
- - "~>"
|
88
116
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
117
|
+
version: '5.8'
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
122
|
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
124
|
+
version: '5.8'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
|
-
name: minitest
|
126
|
+
name: minitest-reporters
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
129
|
- - "~>"
|
102
130
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
131
|
+
version: '1.1'
|
104
132
|
type: :development
|
105
133
|
prerelease: false
|
106
134
|
version_requirements: !ruby/object:Gem::Requirement
|
107
135
|
requirements:
|
108
136
|
- - "~>"
|
109
137
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
111
|
-
|
138
|
+
version: '1.1'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: redcarpet
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '3.3'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '3.3'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: yard
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.9'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0.9'
|
167
|
+
description: An AIMGP (Automatic Induction of Machine code by Genetic Programming)
|
168
|
+
engine
|
112
169
|
email:
|
113
170
|
- furunkel@polyadic.com
|
114
|
-
executables:
|
115
|
-
- evoasm-search
|
171
|
+
executables: []
|
116
172
|
extensions:
|
117
|
-
- ext/evoasm_ext/
|
173
|
+
- ext/evoasm_ext/Rakefile
|
118
174
|
extra_rdoc_files: []
|
119
175
|
files:
|
176
|
+
- ".gdbinit"
|
120
177
|
- ".gemrelease"
|
121
178
|
- ".gitignore"
|
179
|
+
- ".gitmodules"
|
180
|
+
- ".rubocop.yml"
|
122
181
|
- Gemfile
|
123
|
-
-
|
124
|
-
- Gemfile.rake.lock
|
125
|
-
- LICENSE.txt
|
182
|
+
- LICENSE.md
|
126
183
|
- Makefile
|
127
184
|
- README.md
|
128
185
|
- Rakefile
|
129
186
|
- bin/gdb
|
130
|
-
-
|
131
|
-
-
|
132
|
-
-
|
133
|
-
-
|
187
|
+
- bin/gdb_loop
|
188
|
+
- docs/FindingInstructions.md
|
189
|
+
- docs/JIT.md
|
190
|
+
- docs/SymbolicRegression.md
|
191
|
+
- docs/Visualization.md
|
192
|
+
- docs/examples/bit_insts.rb
|
193
|
+
- docs/examples/jit.rb
|
194
|
+
- docs/examples/loss.gif
|
195
|
+
- docs/examples/program.png
|
196
|
+
- docs/examples/sym_reg.rb
|
197
|
+
- docs/examples/vis.rb
|
134
198
|
- evoasm.gemspec
|
135
|
-
-
|
136
|
-
-
|
137
|
-
-
|
138
|
-
-
|
139
|
-
- ext/evoasm_ext/evoasm-
|
140
|
-
- ext/evoasm_ext/evoasm-
|
141
|
-
- ext/evoasm_ext/evoasm-
|
142
|
-
- ext/evoasm_ext/evoasm-
|
143
|
-
- ext/evoasm_ext/evoasm-
|
144
|
-
- ext/evoasm_ext/evoasm-
|
145
|
-
- ext/evoasm_ext/evoasm-
|
146
|
-
- ext/evoasm_ext/evoasm-error.c
|
147
|
-
- ext/evoasm_ext/evoasm-error.h
|
148
|
-
- ext/evoasm_ext/evoasm-
|
149
|
-
- ext/evoasm_ext/evoasm-
|
150
|
-
- ext/evoasm_ext/evoasm-
|
151
|
-
- ext/evoasm_ext/evoasm-
|
152
|
-
- ext/evoasm_ext/evoasm-
|
153
|
-
- ext/evoasm_ext/evoasm-
|
154
|
-
- ext/evoasm_ext/evoasm-
|
155
|
-
- ext/evoasm_ext/evoasm-
|
156
|
-
- ext/evoasm_ext/evoasm-
|
157
|
-
- ext/evoasm_ext/evoasm-
|
158
|
-
- ext/evoasm_ext/evoasm-
|
159
|
-
- ext/evoasm_ext/evoasm-
|
160
|
-
- ext/evoasm_ext/evoasm.c
|
161
|
-
- ext/evoasm_ext/evoasm.h
|
162
|
-
- ext/evoasm_ext/
|
163
|
-
- ext/evoasm_ext/
|
199
|
+
- ext/evoasm_ext/Rakefile
|
200
|
+
- ext/evoasm_ext/compile.rake
|
201
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-alloc.c
|
202
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-alloc.h
|
203
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-arch.c
|
204
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-arch.h
|
205
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-bitmap.h
|
206
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-buf.c
|
207
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-buf.h
|
208
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-domain.c
|
209
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-domain.h
|
210
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-error.c
|
211
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-error.h
|
212
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-log.c
|
213
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-log.h
|
214
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-param.c
|
215
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-param.h
|
216
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-pop-params.c
|
217
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-pop-params.h
|
218
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-pop.c
|
219
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-pop.h
|
220
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-program-io.c
|
221
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-program-io.h
|
222
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-program.c
|
223
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-program.h
|
224
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-rand.c
|
225
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-rand.h
|
226
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-signal.c
|
227
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-signal.h
|
228
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-util.h
|
229
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-x64.c
|
230
|
+
- ext/evoasm_ext/libevoasm/src/evoasm-x64.h
|
231
|
+
- ext/evoasm_ext/libevoasm/src/evoasm.c
|
232
|
+
- ext/evoasm_ext/libevoasm/src/evoasm.h
|
233
|
+
- ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-enums.h
|
234
|
+
- ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-insts.c
|
235
|
+
- ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-insts.h
|
236
|
+
- ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-misc.c
|
237
|
+
- ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-misc.h
|
238
|
+
- ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-params.c
|
239
|
+
- ext/evoasm_ext/libevoasm/src/gen/evoasm-x64-params.h
|
164
240
|
- lib/evoasm.rb
|
165
|
-
- lib/evoasm/
|
166
|
-
- lib/evoasm/
|
167
|
-
- lib/evoasm/
|
168
|
-
- lib/evoasm/core_ext/array.rb
|
169
|
-
- lib/evoasm/core_ext/integer.rb
|
170
|
-
- lib/evoasm/core_ext/kwstruct.rb
|
171
|
-
- lib/evoasm/core_ext/range.rb
|
241
|
+
- lib/evoasm/buffer.rb
|
242
|
+
- lib/evoasm/capstone.rb
|
243
|
+
- lib/evoasm/domain.rb
|
172
244
|
- lib/evoasm/error.rb
|
173
|
-
- lib/evoasm/
|
174
|
-
- lib/evoasm/
|
175
|
-
- lib/evoasm/
|
176
|
-
- lib/evoasm/
|
177
|
-
- lib/evoasm/
|
178
|
-
- lib/evoasm/
|
179
|
-
- lib/evoasm/
|
180
|
-
- lib/evoasm/
|
181
|
-
- lib/evoasm/
|
182
|
-
- lib/evoasm/gen/x64.rb
|
183
|
-
- lib/evoasm/gen/x64/funcs.rb
|
184
|
-
- lib/evoasm/gen/x64/inst.rb
|
245
|
+
- lib/evoasm/exception_error.rb
|
246
|
+
- lib/evoasm/ffi_ext.rb
|
247
|
+
- lib/evoasm/libevoasm.rb
|
248
|
+
- lib/evoasm/libevoasm/x64_enums.rb
|
249
|
+
- lib/evoasm/parameter.rb
|
250
|
+
- lib/evoasm/population.rb
|
251
|
+
- lib/evoasm/population/parameters.rb
|
252
|
+
- lib/evoasm/population/plotter.rb
|
253
|
+
- lib/evoasm/prng.rb
|
185
254
|
- lib/evoasm/program.rb
|
186
|
-
- lib/evoasm/
|
187
|
-
- lib/evoasm/
|
188
|
-
- lib/evoasm/tasks/template_task.rb
|
255
|
+
- lib/evoasm/program/io.rb
|
256
|
+
- lib/evoasm/test.rb
|
189
257
|
- lib/evoasm/version.rb
|
190
|
-
-
|
191
|
-
-
|
192
|
-
-
|
193
|
-
|
258
|
+
- lib/evoasm/x64.rb
|
259
|
+
- lib/evoasm/x64/cpu_state.rb
|
260
|
+
- lib/evoasm/x64/instruction.rb
|
261
|
+
- lib/evoasm/x64/operand.rb
|
262
|
+
- lib/evoasm/x64/parameters.rb
|
263
|
+
- test/helpers/population_helper.rb
|
264
|
+
- test/helpers/test_helper.rb
|
265
|
+
- test/helpers/x64_helper.rb
|
266
|
+
- test/integration/bitwise_reverse_test.rb
|
267
|
+
- test/integration/gcd_test.rb
|
268
|
+
- test/integration/popcnt_test.rb
|
269
|
+
- test/integration/sym_reg_test.rb
|
270
|
+
- test/unit/evoasm/buffer_test.rb
|
271
|
+
- test/unit/evoasm/capstone_test.rb
|
272
|
+
- test/unit/evoasm/domain_test.rb
|
273
|
+
- test/unit/evoasm/population/parameters_test.rb
|
274
|
+
- test/unit/evoasm/population_test.rb
|
275
|
+
- test/unit/evoasm/prng_test.rb
|
276
|
+
- test/unit/evoasm/x64/cpu_state_test.rb
|
277
|
+
- test/unit/evoasm/x64/encoding_test.rb
|
278
|
+
- test/unit/evoasm/x64/instruction_access_test.rb
|
279
|
+
- test/unit/evoasm/x64/instruction_encoding_test.rb
|
280
|
+
- test/unit/evoasm/x64/instruction_test.rb
|
281
|
+
- test/unit/evoasm/x64/parameters_test.rb
|
282
|
+
- test/unit/evoasm/x64_test.rb
|
283
|
+
homepage: https://github.com/evoasm/evoasm/
|
194
284
|
licenses:
|
195
|
-
-
|
285
|
+
- AGPL-3.0
|
196
286
|
metadata: {}
|
197
287
|
post_install_message:
|
198
288
|
rdoc_options: []
|
@@ -213,9 +303,25 @@ rubyforge_project:
|
|
213
303
|
rubygems_version: 2.5.1
|
214
304
|
signing_key:
|
215
305
|
specification_version: 4
|
216
|
-
summary: An AIMGP
|
306
|
+
summary: An AIMGP engine
|
217
307
|
test_files:
|
218
|
-
- test/
|
219
|
-
- test/
|
220
|
-
- test/
|
221
|
-
|
308
|
+
- test/helpers/population_helper.rb
|
309
|
+
- test/helpers/test_helper.rb
|
310
|
+
- test/helpers/x64_helper.rb
|
311
|
+
- test/integration/bitwise_reverse_test.rb
|
312
|
+
- test/integration/gcd_test.rb
|
313
|
+
- test/integration/popcnt_test.rb
|
314
|
+
- test/integration/sym_reg_test.rb
|
315
|
+
- test/unit/evoasm/buffer_test.rb
|
316
|
+
- test/unit/evoasm/capstone_test.rb
|
317
|
+
- test/unit/evoasm/domain_test.rb
|
318
|
+
- test/unit/evoasm/population/parameters_test.rb
|
319
|
+
- test/unit/evoasm/population_test.rb
|
320
|
+
- test/unit/evoasm/prng_test.rb
|
321
|
+
- test/unit/evoasm/x64/cpu_state_test.rb
|
322
|
+
- test/unit/evoasm/x64/encoding_test.rb
|
323
|
+
- test/unit/evoasm/x64/instruction_access_test.rb
|
324
|
+
- test/unit/evoasm/x64/instruction_encoding_test.rb
|
325
|
+
- test/unit/evoasm/x64/instruction_test.rb
|
326
|
+
- test/unit/evoasm/x64/parameters_test.rb
|
327
|
+
- test/unit/evoasm/x64_test.rb
|