diff options
Diffstat (limited to 'src/vm/core.js')
-rw-r--r-- | src/vm/core.js | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/vm/core.js b/src/vm/core.js index 184be00..a8fbce7 100644 --- a/src/vm/core.js +++ b/src/vm/core.js @@ -81,6 +81,27 @@ class Core { } + initialize(programs) { + const ranges = this.getRanges( + programs.map(p => p.program.length) + ) + + const pc = []; + for (let i=0; i<programs.length; i++) { + const range = ranges[i]; + const program = programs[i].program; + pc.push(programs[i].start + range.start); + + for (let j=0; j<program.length; j++) { + const index = this.normalize(range.start, j); + this.data[index] = JSON.parse(JSON.stringify(program[j])); + } + } + + return pc; + } + + normalize(pc, value) { return mod((pc + value), this.data.length); } |