Fixed AsmJit tests.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 16 Dec 2015 00:03:56 +0000
changeset 4 f2d0d2859193
parent 3 483729eb4432
child 5 7b9132bf8295
Fixed AsmJit tests.
asm/AJBaseReg.st
asm/AJCallInfo.st
asm/AJGeneratedCode.st
asm/AJImmediate.st
asm/AJInstruction.st
asm/AJMem.st
asm/AJRegister.st
asm/AJRoutineStackManager.st
asm/AJStackAlignmentTests.st
asm/AJx64Assembler.st
asm/AJx64AssemblerTests.st
asm/AJx86Assembler.st
asm/AJx86AssemblerTests.st
asm/AJx87Register.st
asm/Make.proto
asm/bc.mak
asm/extensions.st
asm/jv_dragonfly_asm.st
--- a/asm/AJBaseReg.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJBaseReg.st	Wed Dec 16 00:03:56 2015 +0000
@@ -5,7 +5,7 @@
 AJOperand subclass:#AJBaseReg
 	instanceVariableNames:'size code name'
 	classVariableNames:''
-	poolDictionaries:''
+	poolDictionaries:'AJConstants'
 	category:'AsmJit-Operands'
 !
 
@@ -117,6 +117,8 @@
     Of the general-purpose registers, this is true only of SPL, BPL, SIL, DIL."
 
     ^ (code & RegProhibitsRexMask) ~~ 0
+
+    "Modified (format): / 15-12-2015 / 23:30:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 requiresRex 
--- a/asm/AJCallInfo.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJCallInfo.st	Wed Dec 16 00:03:56 2015 +0000
@@ -13,6 +13,14 @@
 AJCallInfo comment:''
 !
 
+!AJCallInfo class methodsFor:'instance creation'!
+
+new
+    "return an initialized instance"
+
+    ^ self basicNew initialize.
+! !
+
 !AJCallInfo methodsFor:'accessing'!
 
 alignment: aStackAlignment
--- a/asm/AJGeneratedCode.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJGeneratedCode.st	Wed Dec 16 00:03:56 2015 +0000
@@ -16,6 +16,12 @@
 
 fromInstructions: instructions
     ^ self new fromInstructions: instructions
+!
+
+new
+    "return an initialized instance"
+
+    ^ self basicNew initialize.
 ! !
 
 !AJGeneratedCode methodsFor:'accessing'!
--- a/asm/AJImmediate.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJImmediate.st	Wed Dec 16 00:03:56 2015 +0000
@@ -12,6 +12,14 @@
 AJImmediate comment:'I am an immediate (constant integer) operand used by the assembler.

Example:
	"create an immediate from an integer"
	1 asImm.
	"implicitely use an immediate in an assembly instrution"
	asm := AJx64Assembler new.
	asm add: 1 to: asm RAX.
	'
 !
 
+!AJImmediate class methodsFor:'instance creation'!
+
+new
+    "return an initialized instance"
+
+    ^ self basicNew initialize.
+! !
+
 !AJImmediate class methodsFor:'as yet unclassified'!
 
 ivalue: aValue
--- a/asm/AJInstruction.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJInstruction.st	Wed Dec 16 00:03:56 2015 +0000
@@ -12,6 +12,14 @@
 AJInstruction comment:''
 !
 
+!AJInstruction class methodsFor:'instance creation'!
+
+new
+    "return an initialized instance"
+
+    ^ self basicNew initialize.
+! !
+
 !AJInstruction methodsFor:'accessing'!
 
 annotation
--- a/asm/AJMem.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJMem.st	Wed Dec 16 00:03:56 2015 +0000
@@ -5,13 +5,21 @@
 AJOperand subclass:#AJMem
 	instanceVariableNames:'size base index shift segmentPrefix hasLabel target displacement'
 	classVariableNames:''
-	poolDictionaries:''
+	poolDictionaries:'AJConstants'
 	category:'AsmJit-Operands'
 !
 
 AJMem comment:'I am memory operand used in assembly instructions. I can be created from an immedate or a register.

Memory operands are used to read values indirectly from memory using certain offsets.

Example:
	asm := AJx86Assembler new.
	
	"create an memory operand on the address 1234"
	1234 asImm ptr
	
	"create a simple memory operand with RAX as base"
	asm RAX ptr.
	
	"the same with a 8 byte offset"
	asm RAX ptr + 8'
 !
 
+!AJMem class methodsFor:'instance creation'!
+
+new
+    "return an initialized instance"
+
+    ^ self basicNew initialize.
+! !
+
 !AJMem methodsFor:'accessing'!
 
 * aScale
--- a/asm/AJRegister.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJRegister.st	Wed Dec 16 00:03:56 2015 +0000
@@ -5,7 +5,7 @@
 AJBaseReg subclass:#AJRegister
 	instanceVariableNames:''
 	classVariableNames:''
-	poolDictionaries:''
+	poolDictionaries:'AJConstants'
 	category:'AsmJit-Operands'
 !
 
@@ -17,6 +17,8 @@
 code: aCode
     code := aCode.
     size :=  1 << (( code bitAnd: RegTypeMask ) >> 4).
+
+    "Modified (format): / 15-12-2015 / 23:24:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 influencingRegisters
@@ -27,6 +29,8 @@
 
 size
     ^ 1 << (( code bitAnd: RegTypeMask ) >> 4).
+
+    "Modified (format): / 15-12-2015 / 23:28:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !AJRegister methodsFor:'testing'!
--- a/asm/AJRoutineStackManager.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJRoutineStackManager.st	Wed Dec 16 00:03:56 2015 +0000
@@ -13,6 +13,14 @@
 AJRoutineStackManager comment:''
 !
 
+!AJRoutineStackManager class methodsFor:'instance creation'!
+
+new
+    "return an initialized instance"
+
+    ^ self basicNew initialize.
+! !
+
 !AJRoutineStackManager methodsFor:'as yet unclassified'!
 
 analyzeInstructions: anInstructions assembler: asm
--- a/asm/AJStackAlignmentTests.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJStackAlignmentTests.st	Wed Dec 16 00:03:56 2015 +0000
@@ -56,9 +56,9 @@
     
     asm generatedCode. "to analyze instructions"
     self assert: callInfo stackSize = 12.
-    self assert: callInfo needsAlignment 
+    self assert: callInfo needsAlignment
 
-    
+    "Modified (format): / 15-12-2015 / 23:20:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !AJStackAlignmentTests methodsFor:'utility'!
--- a/asm/AJx64Assembler.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJx64Assembler.st	Wed Dec 16 00:03:56 2015 +0000
@@ -5,7 +5,7 @@
 AJx86Assembler subclass:#AJx64Assembler
 	instanceVariableNames:''
 	classVariableNames:''
-	poolDictionaries:''
+	poolDictionaries:'AJx86Registers'
 	category:'AsmJit-x86'
 !
 
--- a/asm/AJx64AssemblerTests.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJx64AssemblerTests.st	Wed Dec 16 00:03:56 2015 +0000
@@ -9,8 +9,6 @@
 	category:'AsmJit-Tests'
 !
 
-AJx64AssemblerTests comment:''
-!
 
 !AJx64AssemblerTests class methodsFor:'as yet unclassified'!
 
@@ -174,8 +172,10 @@
 testAssemblyImmAddr
     "This is not supported in 64-bit mode -- the ModRM value for this results in RIP-relative addressing."
 
-    <expectedFailure>
+    self skipIf: true description: 'This is not supported in 64-bit mode -- the ModRM value for this results in RIP-relative addressing.'.
     super testAssemblyImmAddr
+
+    "Modified: / 21-12-2015 / 09:47:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 testAssemblyMemBase
@@ -846,3 +846,10 @@
         yourself
 ! !
 
+!AJx64AssemblerTests class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
Binary file asm/AJx86Assembler.st has changed
--- a/asm/AJx86AssemblerTests.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJx86AssemblerTests.st	Wed Dec 16 00:03:56 2015 +0000
@@ -301,31 +301,6 @@
         16r0F 16rB6 16rC4 ]
 !
 
-testRegistersOf: asm
-
-    | numRegs |
-    numRegs := asm numGPRegisters.
-    
-    0 to: numRegs-1 do: [:i |
-        self assert: (asm reg8: i) size = 1.
-        self assert: (asm reg8: i) index = i.
-        
-        self assert: (asm reg16: i) size = 2.
-        self assert: (asm reg16: i) index = i.
-        
-        self assert: (asm reg32: i) size = 4.
-        self assert: (asm reg32: i) index = i.
-
-        self assert: (asm isGPNRegister: (asm nReg: i)).
-    
-        asm is64BitMode ifTrue: [
-            self assert: (asm reg64: i) size = 8.
-            self assert: (asm reg64: i) index = i.
-            ]	
-    ].
-    
-!
-
 testSyscall
     "Syscall instruction is only valid in 64-bit mode"
 
@@ -355,6 +330,32 @@
     
     
     
+!
+
+tstRegistersOf: asm
+
+    | numRegs |
+    numRegs := asm numGPRegisters.
+    
+    0 to: numRegs-1 do: [:i |
+        self assert: (asm reg8: i) size = 1.
+        self assert: (asm reg8: i) index = i.
+        
+        self assert: (asm reg16: i) size = 2.
+        self assert: (asm reg16: i) index = i.
+        
+        self assert: (asm reg32: i) size = 4.
+        self assert: (asm reg32: i) index = i.
+
+        self assert: (asm isGPNRegister: (asm nReg: i)).
+    
+        asm is64BitMode ifTrue: [
+            self assert: (asm reg64: i) size = 8.
+            self assert: (asm reg64: i) index = i.
+            ]   
+    ].
+
+    "Created: / 15-12-2015 / 23:59:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !AJx86AssemblerTests methodsFor:'tests-FPU'!
--- a/asm/AJx87Register.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/AJx87Register.st	Wed Dec 16 00:03:56 2015 +0000
@@ -5,7 +5,7 @@
 AJBaseReg subclass:#AJx87Register
 	instanceVariableNames:''
 	classVariableNames:''
-	poolDictionaries:''
+	poolDictionaries:'AJConstants'
 	category:'AsmJit-x86-Operands'
 !
 
@@ -18,6 +18,8 @@
 
     code := aCode bitOr: RegX87.
     size := 10.
+
+    "Modified (format): / 15-12-2015 / 23:34:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 influencingRegisters
--- a/asm/Make.proto	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/Make.proto	Wed Dec 16 00:03:56 2015 +0000
@@ -144,25 +144,25 @@
 $(OUTDIR)AJStdCallCallInfo.$(O) AJStdCallCallInfo.$(H): AJStdCallCallInfo.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJCallInfo.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJx86Instruction.$(O) AJx86Instruction.$(H): AJx86Instruction.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJx86Registers.$(O) AJx86Registers.$(H): AJx86Registers.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJConstants.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
-$(OUTDIR)AJBaseReg.$(O) AJBaseReg.$(H): AJBaseReg.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)AJBaseReg.$(O) AJBaseReg.$(H): AJBaseReg.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJConstants.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJCallArgument.$(O) AJCallArgument.$(H): AJCallArgument.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJInstruction.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJStackInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJCallCleanup.$(O) AJCallCleanup.$(H): AJCallCleanup.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJInstruction.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJStackInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJImmediate.$(O) AJImmediate.$(H): AJImmediate.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)AJMem.$(O) AJMem.$(H): AJMem.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)AJMem.$(O) AJMem.$(H): AJMem.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJConstants.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJx64Instruction.$(O) AJx64Instruction.$(H): AJx64Instruction.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJInstruction.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJx86Instruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJx86Assembler.$(O) AJx86Assembler.$(H): AJx86Assembler.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJAssembler.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJConstants.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJx86Registers.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJx86InstructionDescription.$(O) AJx86InstructionDescription.$(H): AJx86InstructionDescription.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJConstants.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJx86Registers.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJx86JumpInstruction.$(O) AJx86JumpInstruction.$(H): AJx86JumpInstruction.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJInstruction.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJJumpInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJMMRegister.$(O) AJMMRegister.$(H): AJMMRegister.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJBaseReg.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)AJRegister.$(O) AJRegister.$(H): AJRegister.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJBaseReg.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)AJx64Assembler.$(O) AJx64Assembler.$(H): AJx64Assembler.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJAssembler.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJx86Assembler.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)AJRegister.$(O) AJRegister.$(H): AJRegister.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJBaseReg.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJConstants.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)AJx64Assembler.$(O) AJx64Assembler.$(H): AJx64Assembler.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJAssembler.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJx86Assembler.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJx86Registers.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJx64InstructionDescription.$(O) AJx64InstructionDescription.$(H): AJx64InstructionDescription.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJx86InstructionDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJx64JumpInstruction.$(O) AJx64JumpInstruction.$(H): AJx64JumpInstruction.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJInstruction.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJJumpInstruction.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJx86JumpInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)AJx87Register.$(O) AJx87Register.$(H): AJx87Register.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJBaseReg.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)AJx87Register.$(O) AJx87Register.$(H): AJx87Register.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJBaseReg.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJConstants.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJxMMRegister.$(O) AJxMMRegister.$(H): AJxMMRegister.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJBaseReg.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJx86GPRegister.$(O) AJx86GPRegister.$(H): AJx86GPRegister.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJBaseReg.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJRegister.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJx86Registers.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)AJx64RipRegister.$(O) AJx64RipRegister.$(H): AJx64RipRegister.st $(INCLUDE_TOP)/jv/dragonfly/asm/AJBaseReg.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJOperand.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJRegister.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJx86GPRegister.$(H) $(INCLUDE_TOP)/jv/dragonfly/asm/AJx86Registers.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Integer.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/PeekableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PositionableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libbasic/WriteStream.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Boolean.$(H) $(INCLUDE_TOP)/stx/libbasic/False.$(H) $(INCLUDE_TOP)/stx/libbasic/Integer.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/PeekableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PositionableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libbasic/True.$(H) $(INCLUDE_TOP)/stx/libbasic/WriteStream.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/asm/bc.mak	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/bc.mak	Wed Dec 16 00:03:56 2015 +0000
@@ -91,25 +91,25 @@
 $(OUTDIR)AJStdCallCallInfo.$(O) AJStdCallCallInfo.$(H): AJStdCallCallInfo.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJCallInfo.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJx86Instruction.$(O) AJx86Instruction.$(H): AJx86Instruction.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJInstruction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJx86Registers.$(O) AJx86Registers.$(H): AJx86Registers.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJConstants.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
-$(OUTDIR)AJBaseReg.$(O) AJBaseReg.$(H): AJBaseReg.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)AJBaseReg.$(O) AJBaseReg.$(H): AJBaseReg.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJConstants.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJCallArgument.$(O) AJCallArgument.$(H): AJCallArgument.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJInstruction.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJStackInstruction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJCallCleanup.$(O) AJCallCleanup.$(H): AJCallCleanup.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJInstruction.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJStackInstruction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJImmediate.$(O) AJImmediate.$(H): AJImmediate.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)AJMem.$(O) AJMem.$(H): AJMem.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)AJMem.$(O) AJMem.$(H): AJMem.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJConstants.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJx64Instruction.$(O) AJx64Instruction.$(H): AJx64Instruction.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJInstruction.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJx86Instruction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJx86Assembler.$(O) AJx86Assembler.$(H): AJx86Assembler.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJAssembler.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJConstants.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJx86Registers.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJx86InstructionDescription.$(O) AJx86InstructionDescription.$(H): AJx86InstructionDescription.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJConstants.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJx86Registers.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJx86JumpInstruction.$(O) AJx86JumpInstruction.$(H): AJx86JumpInstruction.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJInstruction.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJJumpInstruction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJMMRegister.$(O) AJMMRegister.$(H): AJMMRegister.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJBaseReg.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)AJRegister.$(O) AJRegister.$(H): AJRegister.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJBaseReg.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)AJx64Assembler.$(O) AJx64Assembler.$(H): AJx64Assembler.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJAssembler.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJx86Assembler.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)AJRegister.$(O) AJRegister.$(H): AJRegister.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJBaseReg.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJConstants.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)AJx64Assembler.$(O) AJx64Assembler.$(H): AJx64Assembler.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJAssembler.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJx86Assembler.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJx86Registers.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJx64InstructionDescription.$(O) AJx64InstructionDescription.$(H): AJx64InstructionDescription.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJx86InstructionDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJx64JumpInstruction.$(O) AJx64JumpInstruction.$(H): AJx64JumpInstruction.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJInstruction.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJJumpInstruction.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJx86JumpInstruction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)AJx87Register.$(O) AJx87Register.$(H): AJx87Register.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJBaseReg.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)AJx87Register.$(O) AJx87Register.$(H): AJx87Register.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJBaseReg.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJConstants.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJxMMRegister.$(O) AJxMMRegister.$(H): AJxMMRegister.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJBaseReg.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJx86GPRegister.$(O) AJx86GPRegister.$(H): AJx86GPRegister.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJBaseReg.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJRegister.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJx86Registers.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AJx64RipRegister.$(O) AJx64RipRegister.$(H): AJx64RipRegister.st $(INCLUDE_TOP)\jv\dragonfly\asm\AJBaseReg.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJOperand.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJRegister.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJx86GPRegister.$(H) $(INCLUDE_TOP)\jv\dragonfly\asm\AJx86Registers.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libbasic\Integer.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\PeekableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PositionableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libbasic\WriteStream.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libbasic\Boolean.$(H) $(INCLUDE_TOP)\stx\libbasic\False.$(H) $(INCLUDE_TOP)\stx\libbasic\Integer.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\PeekableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PositionableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libbasic\True.$(H) $(INCLUDE_TOP)\stx\libbasic\WriteStream.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/asm/extensions.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/extensions.st	Wed Dec 16 00:03:56 2015 +0000
@@ -1,5 +1,21 @@
 "{ Package: 'jv:dragonfly/asm' }"!
 
+!Boolean methodsFor:'Compatibility-Squeak'!
+
+asBit
+    ^ self subclassResponsibility
+
+    "Created: / 15-12-2015 / 23:41:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!False methodsFor:'Compatibility-Squeak'!
+
+asBit
+    ^ 0
+
+    "Created: / 15-12-2015 / 23:41:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !Integer methodsFor:'*AsmJit-Extension'!
 
 asAJOperand
@@ -136,6 +152,14 @@
     aStream print: self.
 ! !
 
+!True methodsFor:'Compatibility-Squeak'!
+
+asBit
+    ^ 1
+
+    "Created: / 15-12-2015 / 23:42:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !WriteStream methodsFor:'*AsmJit-Extension'!
 
 asLineStream
--- a/asm/jv_dragonfly_asm.st	Tue Dec 15 23:18:02 2015 +0000
+++ b/asm/jv_dragonfly_asm.st	Wed Dec 16 00:03:56 2015 +0000
@@ -140,9 +140,64 @@
         Integer isByte
         Integer printAsOperandOn:
         WriteStream asLineStream
+        Boolean asBit
+        False asBit
+        True asBit
     )
 ! !
 
+!jv_dragonfly_asm class methodsFor:'description - mc'!
+
+monticelloLastMergedVersions
+"
+Name: AsmJit-Core-MartinMcClure.3
+Author: MartinMcClure
+Time: 27-01-2013, 04:50:49.940 PM
+UUID: 9982488c-43fc-4dda-9213-a95df64e8ed2
+Ancestors: AsmJit-Core-CamilloBruni.2                
+
+Name: AsmJit-Operands-CamilloBruni.11
+Author: CamilloBruni
+Time: 07-05-2013, 02:22:03.301 PM
+UUID: 95f351e3-2240-4800-93a2-5bb6cc56b1d7
+Ancestors: AsmJit-Operands-MartinMcClure.10  
+
+Name: AsmJit-Instructions-MartinMcClure.6
+Author: MartinMcClure
+Time: 09-02-2013, 02:51:45.480 PM
+UUID: 4e4714c8-5b1f-4152-81e0-134a4be40f50
+Ancestors: AsmJit-Instructions-MartinMcClure.5     
+
+Name: AsmJit-StackManagement-IgorStasenko.6
+Author: IgorStasenko
+Time: 13-08-2013, 01:53:04.489 PM
+UUID: 72e67d90-f55f-4a34-a7b7-fb2b4c8169d2
+Ancestors: AsmJit-StackManagement-IgorStasenko.5    
+
+Name: AsmJit-Extension-MartinMcClure.6
+Author: MartinMcClure
+Time: 20-01-2013, 08:12:25.519 PM
+UUID: 56883179-b4b2-4bd4-8455-d0b8c79822ec
+Ancestors: AsmJit-Extension-IgorStasenko.4
+
+Name: AsmJit-x86-IgorStasenko.26
+Author: IgorStasenko
+Time: 13-08-2013, 01:52:03.480 PM
+UUID: 67677e97-32c1-482f-8498-ec6d1e197e60
+Ancestors: AsmJit-x86-IgorStasenko.25 
+
+Name: AsmJit-Tests-MartinMcClure.13
+Author: MartinMcClure
+Time: 30-01-2013, 10:05:01.183 PM
+UUID: 28a52f9e-6d3c-4e76-8fca-373630481248
+Ancestors: AsmJit-Tests-MartinMcClure.12     
+
+
+"
+
+    "Created: / 16-12-2015 / 00:05:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !jv_dragonfly_asm class methodsFor:'description - project information'!
 
 companyName