asmrb 0.0.2.4 → 0.0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/asmrb.rb +17 -12
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74225be18e6ad9f8003585d23373d487c9dd99b4
|
4
|
+
data.tar.gz: f48368b4eea421396a0efab10d52ab49140e5c23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc11d9c607e77bc977264d6c5f9c78699d790441fbde902f3305693a727126bf6d4d8cf81602a9f660edbccc180f74c99d2f2050a7c8b92b5863f5d4bfba55aa
|
7
|
+
data.tar.gz: f8e4e0b9145ebd6c208f68de766149b97ff8cb47eba73e72462ac58cb889020892adde0667105e31a2f4349d49638640762f55ae784da74923b9a0b993e48f5c
|
data/lib/asmrb.rb
CHANGED
@@ -80,23 +80,24 @@ class Asm
|
|
80
80
|
|
81
81
|
"rdu" => lambda { | ops |
|
82
82
|
e = eval "@stack.reduce(:#{ops})"
|
83
|
+
@stack.clear
|
83
84
|
@stack.push e
|
84
85
|
},
|
85
86
|
|
86
|
-
"add" => lambda { | a |
|
87
|
-
@
|
87
|
+
"add" => lambda { | a, b |
|
88
|
+
@variables[b] = @variables[b] + refvar(a)
|
88
89
|
},
|
89
90
|
|
90
|
-
"sub" => lambda { | a |
|
91
|
-
@
|
91
|
+
"sub" => lambda { | a, b |
|
92
|
+
@variables[b] = @variables[b] - refvar(a)
|
92
93
|
},
|
93
94
|
|
94
|
-
"mul" => lambda { | a |
|
95
|
-
@
|
95
|
+
"mul" => lambda { | a, b |
|
96
|
+
@variables[b] = @variables[b] * refvar(a)
|
96
97
|
},
|
97
98
|
|
98
|
-
"div" => lambda { | a |
|
99
|
-
@
|
99
|
+
"div" => lambda { | a, b |
|
100
|
+
@variables[b] = @variables[b] / refvar(a)
|
100
101
|
},
|
101
102
|
|
102
103
|
"incr" => lambda { |dest, incval = 1|
|
@@ -111,7 +112,11 @@ class Asm
|
|
111
112
|
@variables[dest] =
|
112
113
|
src.is_a?(Symbol) ?
|
113
114
|
@variables[src] : src
|
114
|
-
|
115
|
+
},
|
116
|
+
|
117
|
+
"jnz" => lambda { | name |
|
118
|
+
req_args "jnz", 1
|
119
|
+
@pc = @labels[name] if @stack.pop != 0
|
115
120
|
},
|
116
121
|
|
117
122
|
"jge" => lambda { |name|
|
@@ -139,7 +144,7 @@ class Asm
|
|
139
144
|
|
140
145
|
"jmp" => lambda { |name|
|
141
146
|
@pc = @labels[name]
|
142
|
-
new_title "[#{name}]"
|
147
|
+
new_title "[#{name}]"
|
143
148
|
},
|
144
149
|
|
145
150
|
"pop" => lambda {|val|
|
@@ -379,10 +384,10 @@ Asm.new do
|
|
379
384
|
jmp :exit
|
380
385
|
|
381
386
|
label :recursion
|
387
|
+
mul n, acc
|
388
|
+
sub 1, n
|
382
389
|
push acc
|
383
|
-
mul n
|
384
390
|
push n
|
385
|
-
sub 1
|
386
391
|
jmp :factorial
|
387
392
|
label :exit
|
388
393
|
push acc
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asmrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.2.
|
4
|
+
version: 0.0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Trung
|
@@ -10,7 +10,7 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2015-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: create assembly-like DSL in ruby
|
13
|
+
description: create a toy assembly-like DSL in ruby
|
14
14
|
email: deulamco@gmail.com
|
15
15
|
executables: []
|
16
16
|
extensions: []
|