asmrb 0.0.2.4 → 0.0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|