Ronie Salgado Faila uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-rsf.2066.mcz
==================== Summary ====================
Name: VMMaker.oscog-rsf.2066 Author: rsf Time: 3 January 2017, 6:06:04.527721 am UUID: 8d0771c5-662d-44dd-a8a2-6f50f39af378 Ancestors: VMMaker.oscog-eem.2065
I added methods for generating the sources of the Lowcode VM. I added some missing entries in the IA32 concretize instruction the dispatch table.
After this, I have to fix: the order of the arguments used by the Lowcode trampolines, and the 16r00XX problem with the extB bytecode.
=============== Diff against VMMaker.oscog-eem.2065 ===============
Item was changed: ----- Method: CogIA32Compiler>>dispatchConcretize (in category 'generate machine code') ----- dispatchConcretize "Attempt to generate concrete machine code for the instruction at address. This is the inner dispatch of concretizeAt: actualAddress which exists only to get around the branch size limits in the SqueakV3 (blue book derived) bytecode set." <returnTypeC: #void> opcode >= CDQ ifTrue: [^self dispatchConcretizeProcessorSpecific]. opcode caseOf: { "Noops & Pseudo Ops" [Label] -> [^self concretizeLabel]. [AlignmentNops] -> [^self concretizeAlignmentNops]. [Fill32] -> [^self concretizeFill32]. [Nop] -> [^self concretizeNop]. "Control" [Call] -> [^self concretizeCall]. [CallR] -> [^self concretizeCallR]. [CallFull] -> [^self concretizeCall]. [JumpR] -> [^self concretizeJumpR]. [JumpFull] -> [^self concretizeJumpLong]. [JumpLong] -> [^self concretizeJumpLong]. [JumpLongZero] -> [^self concretizeConditionalJump: 16r4]. [JumpLongNonZero] -> [^self concretizeConditionalJump: 16r5]. [Jump] -> [^self concretizeJump]. "Table B-1 Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture" [JumpZero] -> [^self concretizeConditionalJump: 16r4]. [JumpNonZero] -> [^self concretizeConditionalJump: 16r5]. [JumpNegative] -> [^self concretizeConditionalJump: 16r8]. [JumpNonNegative] -> [^self concretizeConditionalJump: 16r9]. [JumpOverflow] -> [^self concretizeConditionalJump: 16r0]. [JumpNoOverflow] -> [^self concretizeConditionalJump: 16r1]. [JumpCarry] -> [^self concretizeConditionalJump: 16r2]. [JumpNoCarry] -> [^self concretizeConditionalJump: 16r3]. [JumpLess] -> [^self concretizeConditionalJump: 16rC]. [JumpGreaterOrEqual] -> [^self concretizeConditionalJump: 16rD]. [JumpGreater] -> [^self concretizeConditionalJump: 16rF]. [JumpLessOrEqual] -> [^self concretizeConditionalJump: 16rE]. [JumpBelow] -> [^self concretizeConditionalJump: 16r2]. [JumpAboveOrEqual] -> [^self concretizeConditionalJump: 16r3]. [JumpAbove] -> [^self concretizeConditionalJump: 16r7]. [JumpBelowOrEqual] -> [^self concretizeConditionalJump: 16r6]. [JumpFPEqual] -> [^self concretizeConditionalJump: 16r4]. [JumpFPNotEqual] -> [^self concretizeConditionalJump: 16r5]. [JumpFPLess] -> [^self concretizeConditionalJump: 16r2]. [JumpFPGreaterOrEqual] -> [^self concretizeConditionalJump: 16r3]. [JumpFPGreater] -> [^self concretizeConditionalJump: 16r7]. [JumpFPLessOrEqual] -> [^self concretizeConditionalJump: 16r6]. [JumpFPOrdered] -> [^self concretizeConditionalJump: 16rB]. [JumpFPUnordered] -> [^self concretizeConditionalJump: 16rA]. [RetN] -> [^self concretizeRetN]. [Stop] -> [^self concretizeStop]. "Arithmetic" [AddCqR] -> [^self concretizeAddCqR]. [AddCwR] -> [^self concretizeAddCwR]. [AddRR] -> [^self concretizeOpRR: 16r03]. [AddcRR] -> [^self concretizeAddcRR]. [AddcCqR] -> [^self concretizeAddcCqR]. [AddRdRd] -> [^self concretizeSEE2OpRdRd: 16r58]. [AddRsRs] -> [^self concretizeSEEOpRsRs: 16r58]. [AndCqR] -> [^self concretizeAndCqR]. [AndCwR] -> [^self concretizeAndCwR]. [AndRR] -> [^self concretizeOpRR: 16r23]. [TstCqR] -> [^self concretizeTstCqR]. [CmpCqR] -> [^self concretizeCmpCqR]. [CmpCwR] -> [^self concretizeCmpCwR]. [CmpRR] -> [^self concretizeReverseOpRR: 16r39]. [CmpRdRd] -> [^self concretizeCmpRdRd]. [CmpRsRs] -> [^self concretizeCmpRsRs]. [DivRdRd] -> [^self concretizeSEE2OpRdRd: 16r5E]. [DivRsRs] -> [^self concretizeSEEOpRsRs: 16r5E]. [MulRdRd] -> [^self concretizeSEE2OpRdRd: 16r59]. [MulRsRs] -> [^self concretizeSEEOpRsRs: 16r59]. [OrCqR] -> [^self concretizeOrCqR]. [OrCwR] -> [^self concretizeOrCwR]. [OrRR] -> [^self concretizeOpRR: 16r0B]. [SubCqR] -> [^self concretizeSubCqR]. [SubCwR] -> [^self concretizeSubCwR]. [SubRR] -> [^self concretizeOpRR: 16r2B]. [SubbRR] -> [^self concretizeSubbRR]. [SubRdRd] -> [^self concretizeSEE2OpRdRd: 16r5C]. [SubRsRs] -> [^self concretizeSEEOpRsRs: 16r5C]. [SqrtRd] -> [^self concretizeSqrtRd]. [SqrtRs] -> [^self concretizeSqrtRs]. [XorCwR] -> [^self concretizeXorCwR]. [XorRR] -> [^self concretizeOpRR: 16r33]. [XorRdRd] -> [^self concretizeXorRdRd]. [XorRsRs] -> [^self concretizeXorRsRs]. [NegateR] -> [^self concretizeNegateR]. [NotR] -> [^self concretizeNotR]. [LoadEffectiveAddressMwrR] -> [^self concretizeLoadEffectiveAddressMwrR]. [ArithmeticShiftRightCqR] -> [^self concretizeArithmeticShiftRightCqR]. [LogicalShiftRightCqR] -> [^self concretizeLogicalShiftRightCqR]. [LogicalShiftLeftCqR] -> [^self concretizeLogicalShiftLeftCqR]. [ArithmeticShiftRightRR] -> [^self concretizeArithmeticShiftRightRR]. [LogicalShiftLeftRR] -> [^self concretizeLogicalShiftLeftRR]. "Data Movement" [MoveCqR] -> [^self concretizeMoveCqR]. [MoveCwR] -> [^self concretizeMoveCwR]. [MoveRR] -> [^self concretizeReverseOpRR: 16r89]. [MoveRdRd] -> [^self concretizeMoveRdRd]. [MoveRsRs] -> [^self concretizeMoveRsRs]. [MoveAwR] -> [^self concretizeMoveAwR]. [MoveRAw] -> [^self concretizeMoveRAw]. [MoveAbR] -> [^self concretizeMoveAbR]. [MoveRAb] -> [^self concretizeMoveRAb]. [MoveMbrR] -> [^self concretizeMoveMbrR]. [MoveRMbr] -> [^self concretizeMoveRMbr]. [MoveRM8r] -> [^self concretizeMoveRMbr]. [MoveM8rR] -> [^self concretizeMoveM8rR]. [MoveM16rR] -> [^self concretizeMoveM16rR]. [MoveRM16r] -> [^self concretizeMoveRM16r]. [MoveM32rR] -> [^self concretizeMoveMwrR]. [MoveRM32r] -> [^self concretizeMoveRMwr]. [MoveM32rRs] -> [^self concretizeMoveM32rRs]. + [MoveRsM32r] -> [^self concretizeMoveRsM32r]. [MoveM64rRd] -> [^self concretizeMoveM64rRd]. [MoveMwrR] -> [^self concretizeMoveMwrR]. [MoveXbrRR] -> [^self concretizeMoveXbrRR]. [MoveRXbrR] -> [^self concretizeMoveRXbrR]. [MoveXwrRR] -> [^self concretizeMoveXwrRR]. [MoveRXwrR] -> [^self concretizeMoveRXwrR]. [MoveRMwr] -> [^self concretizeMoveRMwr]. [MoveRdM64r] -> [^self concretizeMoveRdM64r]. [PopR] -> [^self concretizePopR]. [PushR] -> [^self concretizePushR]. [PushCq] -> [^self concretizePushCq]. [PushCw] -> [^self concretizePushCw]. [PrefetchAw] -> [^self concretizePrefetchAw]. "Conversion" + [ConvertRRd] -> [^self concretizeConvertRRd]. + [ConvertRdR] -> [^self concretizeConvertRdR]. + + [ConvertRsRd] -> [^self concretizeConvertRsRd]. + [ConvertRdRs] -> [^self concretizeConvertRdRs]. + [ConvertRsR] -> [^self concretizeConvertRsR]. + [ConvertRRs] -> [^self concretizeConvertRRs]. + + [SignExtend8RR] -> [^self concretizeSignExtend8RR]. + [SignExtend16RR] -> [^self concretizeSignExtend16RR]. + + [ZeroExtend8RR] -> [^self concretizeZeroExtend8RR]. + [ZeroExtend16RR] -> [^self concretizeZeroExtend16RR].}! - [ConvertRRd] -> [^self concretizeConvertRRd] }!
Item was added: + ----- Method: VMMaker class>>generateSqueakSpurLowcodeCogVM (in category 'configurations') ----- + generateSqueakSpurLowcodeCogVM + "No primitives since we can use those for the Cog VM" + ^VMMaker + generate: CoInterpreter + and: StackToRegisterMappingCogit + with: #(ObjectMemory Spur32BitCoMemoryManager + SistaVM true + LowcodeVM true + MULTIPLEBYTECODESETS true + bytecodeTableInitializer initializeBytecodeTableForSqueakV3PlusClosuresSistaV1Hybrid) + to: (FileDirectory default pathFromURI: self sourceTree, '/spurlowcodesrc') + platformDir: (FileDirectory default pathFromURI: self sourceTree, '/platforms') + including:#()!
Item was added: + ----- Method: VMMaker class>>generateSqueakSpurLowcodeStackVM (in category 'configurations') ----- + generateSqueakSpurLowcodeStackVM + "No primitives since we can use those from the Cog VM" + ^VMMaker + generate: StackInterpreter + with: #(ObjectMemory Spur32BitMemoryManager + SistaVM true + LowcodeVM true + FailImbalancedPrimitives false + MULTIPLEBYTECODESETS true + bytecodeTableInitializer initializeBytecodeTableForSqueakV3PlusClosuresSistaV1Hybrid) + to: (FileDirectory default pathFromURI: self sourceTree, '/spurlowcodestacksrc') + platformDir: (FileDirectory default pathFromURI: self sourceTree, '/platforms') + including: #()!
vm-dev@lists.squeakfoundation.org