@awayfl/avm2
Version:
Virtual machine for executing AS3 code
43 lines (42 loc) • 2.02 kB
JavaScript
import { Bytecode } from '../../Bytecode';
import { emitInlineStack } from './emitInlineVars';
export function emitDomainMemOppcodes(state) {
var z = state.currentOpcode;
var stack0 = emitInlineStack(state, 0);
var stack1 = emitInlineStack(state, 1);
state.emitMain('domainMemory = domainMemory || context.domainMemory;');
switch (z.name) {
//http://docs.redtamarin.com/0.4.1T124/avm2/intrinsics/memory/package.html#si32()
case Bytecode.SI8:
state.emitMain("domainMemory.setInt8(".concat(stack0, ", ").concat(stack1, ")"));
break;
case Bytecode.SI16:
state.emitMain("domainMemory.setInt16(".concat(stack0, ", ").concat(stack1, ", true);"));
break;
case Bytecode.SI32:
state.emitMain("domainMemory.setInt32(".concat(stack0, ", ").concat(stack1, ", true);"));
break;
case Bytecode.SF32:
state.emitMain("domainMemory.setFloat32(".concat(stack0, ", ").concat(stack1, ", true);"));
break;
case Bytecode.SF64:
state.emitMain("domainMemory.setFloat64(".concat(stack0, ", ").concat(stack1, ", true);"));
break;
//http://docs.redtamarin.com/0.4.1T124/avm2/intrinsics/memory/package.html#li32()
case Bytecode.LI8:
state.emitMain("".concat(stack0, " = domainMemory.getInt8(").concat(stack0, ")"));
break;
case Bytecode.LI16:
state.emitMain("".concat(stack0, " = getInt16(").concat(stack0, ", true);"));
break;
case Bytecode.LI32:
state.emitMain("".concat(stack0, " = domainMemory.getInt32(").concat(stack0, ", true);"));
break;
case Bytecode.LF32:
state.emitMain("".concat(stack0, " = domainMemory.getFloat32(").concat(stack0, ", true);"));
break;
case Bytecode.LF64:
state.emitMain("".concat(stack0, " = domainMemory.getFloat64(").concat(stack0, ", true);"));
break;
}
}