[Vm-dev] VM Maker: Cog-eem.281.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Sep 21 20:14:36 UTC 2015
Eliot Miranda uploaded a new version of Cog to project VM Maker:
http://source.squeak.org/VMMaker/Cog-eem.281.mcz
==================== Summary ====================
Name: Cog-eem.281
Author: eem
Time: 21 September 2015, 1:13:55.328 pm
UUID: 022a9cf4-e144-49ca-bf3a-cd567d9b723d
Ancestors: Cog-eem.280
Double dispatch conversion to/from integers so processor can choose word size.
Implement some printing support in the x64 alien.
=============== Diff against Cog-eem.280 ===============
Item was added:
+ ----- Method: BochsX64Alien>>convertIntegerToInternal: (in category 'tests support') -----
+ convertIntegerToInternal: anInteger
+ "Conversion for 64-bit processors."
+ ^anInteger signedIntToLong64!
Item was added:
+ ----- Method: BochsX64Alien>>convertInternalToInteger: (in category 'tests support') -----
+ convertInternalToInteger: unsigned
+ "Conversion for 64-bit processors."
+ ^unsigned signedIntFromLong64!
Item was added:
+ ----- Method: BochsX64Alien>>printFields:inRegisterState:on: (in category 'printing') -----
+ printFields: fields inRegisterState: registerStateVector on: aStream
+ | rsvs |
+ aStream ensureCr.
+ rsvs := registerStateVector readStream.
+ fields withIndexDo:
+ [:sym :index| | val |
+ sym = #cr
+ ifTrue: [aStream cr]
+ ifFalse:
+ [(val := rsvs next) isNil ifTrue: [^self].
+ (sym beginsWith: 'xmm')
+ ifTrue:
+ [aStream nextPutAll: sym; nextPut: $:; space.
+ val printOn: aStream base: 16 length: 16 padded: true.
+ aStream space; nextPut: $(.
+ "At the image level Float is apparently in big-endian format"
+ ((Float basicNew: 2)
+ at: 2 put: (val bitAnd: 16rFFFFFFFF);
+ at: 1 put: (val bitShift: -32);
+ yourself)
+ printOn: aStream.
+ aStream nextPut: $)]
+ ifFalse:
+ [aStream nextPutAll: sym; nextPut: $:; space.
+ val printOn: aStream base: 16 length: 8 padded: true.
+ #eflags == sym
+ ifTrue:
+ [aStream space.
+ 'C-P-A-ZS---O' withIndexDo:
+ [:flag :bitIndex|
+ flag ~= $- ifTrue:
+ [aStream nextPut: flag; nextPutAll: 'F='; print: (val bitAnd: 1 << (bitIndex - 1)) >> (bitIndex - 1); space]]]
+ ifFalse:
+ [val > 16 ifTrue:
+ [aStream space; nextPut: $(.
+ val printOn: aStream base: 10 length: 1 padded: false.
+ aStream nextPut: $)]]].
+ (fields at: index + 1) ~~ #cr ifTrue:
+ [aStream tab]]]!
Item was added:
+ ----- Method: BochsX64Alien>>printRegisterState:on: (in category 'printing') -----
+ printRegisterState: registerStateVector on: aStream
+ self printFields:
+ ((registerStateVector size < 26
+ or: [(19 to: 26) allSatisfy: [:i| (registerStateVector at: i) isZero]])
+ ifTrue:
+ [#( rax rbx rcx rdx cr
+ rsp rbp rsi rdi cr
+ r8 r9 r10 r11 cr
+ r12 r13 r14 r15 cr
+ rip rflags cr)]
+ ifFalse:
+ [#( rax rbx rcx rdx cr
+ rsp rbp rsi rdi cr
+ r8 r9 r10 r11 cr
+ r12 r13 r14 r15 cr
+ rip rflags cr
+ xmm0low xmm1low cr
+ xmm2low xmm3low cr
+ xmm4low xmm5low cr
+ xmm6low xmm7low cr )])
+ inRegisterState: registerStateVector
+ on: aStream!
Item was added:
+ ----- Method: CogProcessorAlien>>convertIntegerToInternal: (in category 'tests support') -----
+ convertIntegerToInternal: anInteger
+ "Default conversion for 32-bit processors. 64-bit processors override."
+ ^anInteger signedIntToLong!
Item was added:
+ ----- Method: CogProcessorAlien>>convertInternalToInteger: (in category 'tests support') -----
+ convertInternalToInteger: unsigned
+ "Default conversion for 32-bit processors. 64-bit processors override."
+ ^unsigned signedIntFromLong!
More information about the Vm-dev
mailing list