fma-snes65816
Version:
SNES 65816 assembler backend for FMA
190 lines (174 loc) • 6.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _InstructionParameter = require('./InstructionParameter');
var Parameter = _interopRequireWildcard(_InstructionParameter);
var _InstructionWriter = require('./InstructionWriter');
var _InstructionWriter2 = _interopRequireDefault(_InstructionWriter);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var InstructionType = function () {
function InstructionType(p1, p2, writer) {
(0, _classCallCheck3.default)(this, InstructionType);
if (writer === undefined || p1 === undefined || p2 === undefined) {
throw new Error('Missing parameter');
}
this.p1 = p1;
this.p2 = p2;
this.writer = writer;
}
(0, _createClass3.default)(InstructionType, null, [{
key: 'alias',
value: function alias(when, equals) {
return new InstructionType(when.p1, when.p2, equals.writer);
}
}, {
key: 'brk',
value: function brk() {
return new InstructionType(Parameter.NONE, Parameter.NONE, _InstructionWriter2.default.brk);
}
}, {
key: 'addr',
value: function addr() {
return new InstructionType(Parameter.ADDRESS, Parameter.NONE, _InstructionWriter2.default.im16);
}
}, {
key: 'mv',
value: function mv() {
return new InstructionType(Parameter.ADDRESS, Parameter.ADDRESS, _InstructionWriter2.default.mv);
}
}, {
key: 'addr_pc',
value: function addr_pc() {
return new InstructionType(Parameter.ADDRESS, Parameter.NONE, _InstructionWriter2.default.im16);
}
}, {
key: 'iaddrx',
value: function iaddrx() {
return new InstructionType(Parameter.INDIRECT_X, Parameter.NONE, _InstructionWriter2.default.im16);
}
}, {
key: 'addrx',
value: function addrx() {
return new InstructionType(Parameter.ADDRESS, Parameter.X, _InstructionWriter2.default.im16);
}
}, {
key: 'addry',
value: function addry() {
return new InstructionType(Parameter.ADDRESS, Parameter.Y, _InstructionWriter2.default.im16);
}
}, {
key: 'impl',
value: function impl() {
return new InstructionType(Parameter.NONE, Parameter.NONE, _InstructionWriter2.default.impl);
}
}, {
key: 'a',
value: function a() {
return new InstructionType(Parameter.A, Parameter.NONE, _InstructionWriter2.default.impl);
}
}, {
key: 'idp',
value: function idp() {
return new InstructionType(Parameter.INDIRECT, Parameter.NONE, _InstructionWriter2.default.im8);
}
}, {
key: 'isry',
value: function isry() {
return new InstructionType(Parameter.__FUTURE, Parameter.__FUTURE, null);
}
}, {
key: 'idpx',
value: function idpx() {
return new InstructionType(Parameter.INDIRECT, Parameter.X, _InstructionWriter2.default.im8);
}
}, {
key: 'dpx',
value: function dpx() {
return new InstructionType(Parameter.DP, Parameter.X, _InstructionWriter2.default.im8);
}
}, {
key: 'idpy',
value: function idpy() {
return new InstructionType(Parameter.INDIRECT, Parameter.Y, _InstructionWriter2.default.im8);
}
}, {
key: 'dpy',
value: function dpy() {
return new InstructionType(Parameter.DP, Parameter.Y, _InstructionWriter2.default.im8);
}
}, {
key: 'ildpy',
value: function ildpy() {
return new InstructionType(Parameter.LONG_INDIRECT, Parameter.Y, _InstructionWriter2.default.im8);
}
}, {
key: 'im',
value: function im() {
return new InstructionType(Parameter.CONSTANT, Parameter.NONE, _InstructionWriter2.default.im8);
}
}, {
key: 'im_16',
value: function im_16() {
return new InstructionType(Parameter.CONSTANT, Parameter.NONE, _InstructionWriter2.default.im16);
}
}, {
key: 'im_a',
value: function im_a() {
return new InstructionType(Parameter.CONSTANT, Parameter.NONE, _InstructionWriter2.default.im_a);
}
}, {
key: 'im_x',
value: function im_x() {
return new InstructionType(Parameter.CONSTANT, Parameter.NONE, _InstructionWriter2.default.im_xy);
}
}, {
key: 'im_y',
value: function im_y() {
return new InstructionType(Parameter.CONSTANT, Parameter.NONE, _InstructionWriter2.default.im_xy);
}
}, {
key: 'sr',
value: function sr() {
return new InstructionType(Parameter.ADDRESS, Parameter.S, _InstructionWriter2.default.im8);
}
}, {
key: 'dp',
value: function dp() {
return new InstructionType(Parameter.DP, Parameter.NONE, _InstructionWriter2.default.im8);
}
}, {
key: 'ildp',
value: function ildp() {
return new InstructionType(Parameter.LONG_INDIRECT, Parameter.NONE, _InstructionWriter2.default.im8);
}
}, {
key: 'long',
value: function long() {
return new InstructionType(Parameter.LONG_ADDRESS, Parameter.NONE, _InstructionWriter2.default.im24);
}
}, {
key: 'longx',
value: function longx() {
return new InstructionType(Parameter.LONG_ADDRESS, Parameter.X, _InstructionWriter2.default.im24);
}
}, {
key: 'relb',
value: function relb() {
return new InstructionType(Parameter.ADDRESS, Parameter.NONE, _InstructionWriter2.default.rel8);
}
}, {
key: 'relw',
value: function relw() {
return new InstructionType(Parameter.ADDRESS, Parameter.NONE, _InstructionWriter2.default.rel16);
}
}]);
return InstructionType;
}();
exports.default = InstructionType;
//# sourceMappingURL=InstructionType.js.map