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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/asmrb.rb +17 -12
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65959eb6a15a1ae6dfc55cf8d3b66e6d1a1135fc
4
- data.tar.gz: c6cba8bc4473c3673d3f3d07fb6e9cf3e3a6470d
3
+ metadata.gz: 74225be18e6ad9f8003585d23373d487c9dd99b4
4
+ data.tar.gz: f48368b4eea421396a0efab10d52ab49140e5c23
5
5
  SHA512:
6
- metadata.gz: d20a11f724628741c96756ae0ff8239bec0a4d5102a7ba9cc28d4016cee113bb09c6ff169bbeee707a3f3d81ae16980b5a287179d70655f1e2c1ee46288375ab
7
- data.tar.gz: 5eb31088ebe69adf432e4293276932a24fa98d5239bc89f2ea1e13392f74e1cc354cf6cc813e2210f94a5c7bddfe69796404813fa40f70414d355e6e47ccb696
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
- @stack.push(@stack.pop + refvar(a))
87
+ "add" => lambda { | a, b |
88
+ @variables[b] = @variables[b] + refvar(a)
88
89
  },
89
90
 
90
- "sub" => lambda { | a |
91
- @stack.push(@stack.pop - refvar(a))
91
+ "sub" => lambda { | a, b |
92
+ @variables[b] = @variables[b] - refvar(a)
92
93
  },
93
94
 
94
- "mul" => lambda { | a |
95
- @stack.push(@stack.pop * refvar(a))
95
+ "mul" => lambda { | a, b |
96
+ @variables[b] = @variables[b] * refvar(a)
96
97
  },
97
98
 
98
- "div" => lambda { | a |
99
- @stack.push(@stack.pop / refvar(a))
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
- #new_var dest
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}]" #if @pc != @program.length-1
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
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, use LLVM to speed up.
13
+ description: create a toy assembly-like DSL in ruby
14
14
  email: deulamco@gmail.com
15
15
  executables: []
16
16
  extensions: []