New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

mips-core

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mips-core - npm Package Compare versions

Comparing version 0.1.3 to 0.1.4

5

build/mips-core.d.ts

@@ -68,2 +68,3 @@ declare module "assembler/Parser" {

private registerFile;
mspi: number;
private getRegVal(registerNum);

@@ -74,3 +75,3 @@ private setRegVal(registerNum, value);

};
constructor(registerFile: RegisterFile);
constructor(registerFile: RegisterFile, mspi: number);
getInstruction(key: string): Instruction;

@@ -95,3 +96,3 @@ }

[id: string]: number;
});
}, clock: number, ipc: number);
run(asmCode: string): void;

@@ -98,0 +99,0 @@ notifyObserver(line: number): void;

2

build/mips-core.js

@@ -1,2 +0,2 @@

!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("mips-core",[],e):"object"==typeof exports?exports["mips-core"]=e():t["mips-core"]=e()}(this,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=10)}([function(t,e,r){var n;void 0===(n=function(t,e){"use strict";var r;Object.defineProperty(e,"__esModule",{value:!0}),function(t){t[t.READ=0]="READ",t[t.WRITE=1]="WRITE",t[t.RESET=2]="RESET"}(r=e.RegisterAccessType||(e.RegisterAccessType={}));var n=function(){function t(t,e,r){this.observer=null,this.name=t,this.num=e,this.value=r,this.resetVal=r}return t.prototype.notifyObserver=function(t){this.observer&&this.observer(this.num,t)},t.prototype.reset=function(){this.value=this.resetVal,this.notifyObserver(r.RESET)},t.prototype.set=function(t){this.value=t,this.notifyObserver(r.WRITE)},t.prototype.get=function(){return this.notifyObserver(r.READ),this.value},t}();e.Register=n}.apply(e,[r,e]))||(t.exports=n)},function(t,e,r){var n,i;n=[r,e,r(0),r(7)],void 0===(i=function(t,e,r,n){"use strict";function i(t){for(var r in t)e.hasOwnProperty(r)||(e[r]=t[r])}Object.defineProperty(e,"__esModule",{value:!0}),i(r),i(n)}.apply(e,n))||(t.exports=i)},function(t,e,r){var n;void 0===(n=function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t[t.R_FORMAT=0]="R_FORMAT",t[t.I_FORMAT=1]="I_FORMAT"}(e.InstructionFormat||(e.InstructionFormat={}))}.apply(e,[r,e]))||(t.exports=n)},function(t,e,r){var n,i;n=[r,e,r(2),r(8)],void 0===(i=function(t,e,r,n){"use strict";function i(t){for(var r in t)e.hasOwnProperty(r)||(e[r]=t[r])}Object.defineProperty(e,"__esModule",{value:!0}),i(r),i(n)}.apply(e,n))||(t.exports=i)},function(t,e,r){var n,i;n=[r,e,r(9)],void 0===(i=function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){for(var r in t)e.hasOwnProperty(r)||(e[r]=t[r])}(r)}.apply(e,n))||(t.exports=i)},function(t,e,r){var n,i;n=[r,e,r(4),r(1),r(3)],void 0===(i=function(t,e,r,n,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t){this.observer=null,this.registerFile=new n.RegisterFile(t),this.instructionSet=new i.InstructionSet(this.registerFile);var e=Object.keys(this.instructionSet.instructions);this.parser=new r.Parser(t,e)}return t.prototype.run=function(t){var e=this.parser.parse(t);for(var r in e){var n=parseInt(r,10);if(e[n]){this.notifyObserver(n);var i=e[n];this.instructionSet.getInstruction(i[0]).run(i[1],i[2],i[3])}}},t.prototype.notifyObserver=function(t){this.observer&&this.observer(t)},t}();e.Simulator=o}.apply(e,n))||(t.exports=i)},function(t,e,r){var n,i;n=[r,e,r(5)],void 0===(i=function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){for(var r in t)e.hasOwnProperty(r)||(e[r]=t[r])}(r)}.apply(e,n))||(t.exports=i)},function(t,e,r){var n,i;n=[r,e,r(0)],void 0===(i=function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t){for(var e in this.registerList=[],t){var n=t[e];this.registerList[n]=new r.Register(e,n,0)}}return t.prototype.getRegister=function(t){return this.registerList[t]},t.prototype.setObserver=function(t){for(var e=0,r=this.registerList;e<r.length;e++){r[e].observer=t}},t}();e.RegisterFile=n}.apply(e,n))||(t.exports=i)},function(t,e,r){var n,i;n=[r,e,r(2)],void 0===(i=function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t){var e=this;this.instructions={add:{format:r.InstructionFormat.R_FORMAT,run:function(t,r,n){var i=e.getRegVal(r),o=e.getRegVal(n);e.setRegVal(t,i+o)}},addi:{format:r.InstructionFormat.I_FORMAT,run:function(t,r,n){var i=e.getRegVal(r);e.setRegVal(t,i+n)}},sub:{format:r.InstructionFormat.R_FORMAT,run:function(t,r,n){var i=e.getRegVal(r),o=e.getRegVal(n);e.setRegVal(t,i-o)}}},this.registerFile=t}return t.prototype.getRegVal=function(t){return this.registerFile.getRegister(t).get()},t.prototype.setRegVal=function(t,e){return this.registerFile.getRegister(t).set(e)},t.prototype.getInstruction=function(t){return this.instructions[t]},t}();e.InstructionSet=n}.apply(e,n))||(t.exports=i)},function(t,e,r){var n;void 0===(n=function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){this.registerMap=t,this.keyword=e}return t.prototype.getRegisterNum=function(t){var e=this.registerMap[t];if(void 0===e)throw new Error("No such register "+t);return e},t.prototype.parse=function(t){for(var e=[],r=0,n=t.split(/\n/);r<n.length;r++){var i=n[r];e.push(this.parseLine(i))}return e},t.prototype.parseLine=function(t){for(var e=[],r=0,n=t.split(" ");r<n.length;r++){var i=n[r];if(i=i.split(",")[0]){if(i.startsWith("#"))break;if(i.startsWith("$"))e.push(this.getRegisterNum(i));else{if(i.endsWith(":"))throw new Error("label not support now");if(i.includes("("))throw new Error("sw/lw not support now");this.keyword.includes(i)?e.push(i):e.push(parseInt(i,10))}}}return e},t}();e.Parser=r}.apply(e,[r,e]))||(t.exports=n)},function(t,e,r){var n,i;n=[r,e,r(4),r(3),r(1),r(6)],void 0===(i=function(t,e,r,n,i,o){"use strict";function s(t){for(var r in t)e.hasOwnProperty(r)||(e[r]=t[r])}Object.defineProperty(e,"__esModule",{value:!0}),s(r),s(n),s(i),s(o)}.apply(e,n))||(t.exports=i)}])});
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("mips-core",[],t):"object"==typeof exports?exports["mips-core"]=t():e["mips-core"]=t()}(this,function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:o})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t){(void 0)(["./assembler","./instruction","./hardware","./simulator"],function(e,t){"use strict";t&&t.id;function n(t){var n={};for(var o in t)"default"!==o&&(n[o]=t[o]);e(n)}return{setters:[function(e){n(e)},function(e){n(e)},function(e){n(e)},function(e){n(e)}],execute:function(){}}})}])});
//# sourceMappingURL=mips-core.js.map
{
"name": "mips-core",
"version": "0.1.3",
"version": "0.1.4",
"description": "MIPS Assembler Simulator Inspired by MARS",

@@ -10,3 +10,3 @@ "main": "build/mips-core.js",

"build": "webpack",
"test": "nyc mocha",
"test": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc mocha",
"coverage": "nyc report --reporter=text-lcov | coveralls"

@@ -43,3 +43,3 @@ },

"src/**/index.ts",
"src/lib.ts"
"src/mips-core.ts"
],

@@ -46,0 +46,0 @@ "extension": [

# MIPS-CORE
![travis](https://travis-ci.org/sn0wle0pard/mips-core.svg?branch=master) [![Coverage Status](https://coveralls.io/repos/github/sn0wle0pard/mips-core/badge.svg?branch=master)](https://coveralls.io/github/sn0wle0pard/mips-core?branch=master)
[![Build Status](https://travis-ci.org/sn0wle0pard/mips-core.svg?branch=master)](https://travis-ci.org/sn0wle0pard/mips-core) [![Coverage Status](https://coveralls.io/repos/github/sn0wle0pard/mips-core/badge.svg?branch=master)](https://coveralls.io/github/sn0wle0pard/mips-core?branch=master)
> MIPS Assembler Simulator Inspired by [MARS](http://courses.missouristate.edu/KenVollmar/mars/)

@@ -4,0 +4,0 @@

@@ -10,4 +10,9 @@ import {

function sleep(ms: number) {
return new Promise(resolve=> setTimeout(resolve, ms));
}
export class InstructionSet {
private registerFile: RegisterFile;
mspi: number;

@@ -25,6 +30,10 @@ private getRegVal(registerNum: number): number {

format: InstructionFormat.R_FORMAT,
run: (rs: number, rt: number, rd: number) => {
run: async (rs: number, rt: number, rd: number) => {
const sleepTime: number = this.mspi / 3;
const rtValue: number = this.getRegVal(rt);
await sleep(sleepTime);
const rdValue: number = this.getRegVal(rd);
await sleep(sleepTime);
this.setRegVal(rs, rtValue + rdValue);
await sleep(sleepTime);
},

@@ -34,5 +43,8 @@ },

format: InstructionFormat.I_FORMAT,
run: (rs: number, rt: number, imm: number) => {
run: async (rs: number, rt: number, imm: number) => {
const sleepTime: number = this.mspi / 2;
const rtValue: number = this.getRegVal(rt);
await sleep(sleepTime);
this.setRegVal(rs, rtValue + imm);
await sleep(sleepTime);
},

@@ -42,6 +54,10 @@ },

format: InstructionFormat.R_FORMAT,
run: (rs: number, rt: number, rd: number) => {
run: async (rs: number, rt: number, rd: number) => {
const sleepTime: number = this.mspi / 3;
const rtValue: number = this.getRegVal(rt);
await sleep(sleepTime);
const rdValue: number = this.getRegVal(rd);
await sleep(sleepTime);
this.setRegVal(rs, rtValue - rdValue);
await sleep(sleepTime);
},

@@ -51,4 +67,5 @@ },

constructor(registerFile: RegisterFile) {
constructor(registerFile: RegisterFile, mspi: number) {
this.registerFile = registerFile;
this.mspi = mspi;
}

@@ -55,0 +72,0 @@

@@ -43,6 +43,6 @@ import * as assert from 'assert';

const registerFile: RegisterFile = new RegisterFile(registerMap);
const instructionSet: InstructionSet = new InstructionSet(registerFile);
const instructionSet: InstructionSet = new InstructionSet(registerFile, 100);
describe('InstructionSet', () => {
it('add', () => {
it('add', async () => {
const rs: number = 16;

@@ -58,3 +58,3 @@ const rt: number = 17;

instructionSet.getInstruction('add').run(rs, rt, rd);
await instructionSet.getInstruction('add').run(rs, rt, rd);

@@ -66,3 +66,3 @@ assert.strictEqual(registerFile.getRegister(rs).value, rtVal + rdVal);

it('addi', () => {
it('addi', async () => {
const rs: number = 16;

@@ -74,3 +74,3 @@ const rt: number = 17;

instructionSet.getInstruction('addi').run(rs, rt, imm);
await instructionSet.getInstruction('addi').run(rs, rt, imm);

@@ -80,3 +80,3 @@ assert.strictEqual(registerFile.getRegister(rs).value, rtVal + imm);

it('sub', () => {
it('sub', async () => {
const rs: number = 16;

@@ -92,3 +92,3 @@ const rt: number = 17;

instructionSet.getInstruction('sub').run(rs, rt, rd);
await instructionSet.getInstruction('sub').run(rs, rt, rd);

@@ -95,0 +95,0 @@ assert.strictEqual(registerFile.getRegister(rs).value, rtVal - rdVal);

@@ -21,5 +21,6 @@ import {

constructor(registerMap: {[id: string]: number}) {
constructor(registerMap: {[id: string]: number}, clock: number, ipc: number) {
this.registerFile = new RegisterFile(registerMap);
this.instructionSet = new InstructionSet(this.registerFile);
const mspi: number = 1000 / (clock * ipc);
this.instructionSet = new InstructionSet(this.registerFile, mspi);
const keyword: string[] = Object.keys(this.instructionSet.instructions);

@@ -26,0 +27,0 @@ this.parser = new Parser(registerMap, keyword);

@@ -40,2 +40,2 @@ import * as assert from 'assert';

const simulator: Simulator = new Simulator(registerMap);
const simulator: Simulator = new Simulator(registerMap, 100, 1);

@@ -10,3 +10,3 @@ {

"outDir": "build",
"module": "amd",
"module": "system",
"outFile": "build/mips-core.js",

@@ -13,0 +13,0 @@ "noImplicitAny": true,

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc