Added README, licenses and copyright notices.
"{ 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
"Convert receiver into operand: a signed immediate"
^ AJImmediate new ivalue: self
! !
!Integer methodsFor:'*AsmJit-Extension'!
asByte
^ self asTwosComplement: 16rFF
! !
!Integer methodsFor:'*AsmJit-Extension'!
asDoubleWord
^ self asTwosComplement: 16rFFFFFFFF
! !
!Integer methodsFor:'*AsmJit-Extension'!
asImm
"Convert integer value into a signed immediate operand"
^ AJImmediate new ivalue: self
! !
!Integer methodsFor:'*AsmJit-Extension'!
asImm16
"Convert integer value into a signed immediate word operand "
^ AJImmediate new ivalue: self; size: 2
! !
!Integer methodsFor:'*AsmJit-Extension'!
asImm32
"Convert integer value into a signed immediate operand"
^ AJImmediate new ivalue: self; size: 4
! !
!Integer methodsFor:'*AsmJit-Extension'!
asImm8
"Convert integer value into a signed immediate operand"
^ AJImmediate new ivalue: self; size: 1
! !
!Integer methodsFor:'*AsmJit-Extension'!
asQuadWord
^ self asTwosComplement: 16rFFFFFFFFFFFFFFFF
! !
!Integer methodsFor:'*AsmJit-Extension'!
asTwosComplement: mask
"return the two's completemented cropped version.
Example for a byte value:
-5 asTwosComplement: 16rFF "
| bound |
bound := (mask + 1).
self * 2 >= bound
ifTrue: [Error signal: self printString , ' too big for signed ', mask highBit printString, 'bit value'].
(self >= 0)
ifTrue: [ ^ self bitAnd: mask ].
self * 2 < bound negated
ifTrue: [Error signal: self printString , ' too small for signed ', mask highBit printString, 'bit value'].
^ (self + mask + 1) bitAnd: mask
! !
!Integer methodsFor:'*AsmJit-Extension'!
asUImm
"Convert integer value into an unsigned immediate operand"
^ AJImmediate new uvalue: self
! !
!Integer methodsFor:'*AsmJit-Extension'!
asUImm16
"Convert integer value into an unsigned immediate operand"
^ AJImmediate new uvalue: self; size: 2
! !
!Integer methodsFor:'*AsmJit-Extension'!
asUImm32
"Convert integer value into an unsigned immediate operand"
^ AJImmediate new uvalue: self; size: 4
! !
!Integer methodsFor:'*AsmJit-Extension'!
asUImm8
"Convert integer value into an unsigned immediate operand"
^ AJImmediate new uvalue: self; size: 1
! !
!Integer methodsFor:'*AsmJit-Extension'!
asWord
^ self asTwosComplement: 16rFFFF
! !
!Integer methodsFor:'*AsmJit-Extension'!
bin
"Print the receiver as hex, prefixed with 2r."
^self storeStringBase: 2
! !
!Integer methodsFor:'*AsmJit-Extension'!
isByte
^ self >= 0 and: [ self <= 255 ]
! !
!Integer methodsFor:'*AsmJit-Extension'!
printAsOperandOn: aStream
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
^ AJLineStream on: self
! !
!jv_dragonfly_asm class methodsFor:'documentation'!
extensionsVersion_HG
^ '$Changeset: <not expanded> $'
! !