-
Notifications
You must be signed in to change notification settings - Fork 68
/
InterpreterSimulatorMSB64.class.st
49 lines (37 loc) · 1.32 KB
/
InterpreterSimulatorMSB64.class.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Class {
#name : #InterpreterSimulatorMSB64,
#superclass : #InterpreterSimulatorMSB,
#category : #'VMMaker-InterpreterSimulation'
}
{ #category : #'memory access' }
InterpreterSimulatorMSB64 >> byteSwapped: w [
"Return the given integer with its bytes in the reverse order."
^w byteSwap64
]
{ #category : #'memory access' }
InterpreterSimulatorMSB64 >> long32At: byteAddress [
"Return the 32-bit word at byteAddress which must be 0 mod 4."
^ super longAt: byteAddress
]
{ #category : #'memory access' }
InterpreterSimulatorMSB64 >> long32At: byteAddress put: a32BitValue [
"Store the 32-bit value at byteAddress which must be 0 mod 4."
super longAt: byteAddress put: a32BitValue
]
{ #category : #'memory access' }
InterpreterSimulatorMSB64 >> longAt: byteAddress [
"Note: Adjusted for Smalltalk's 1-based array indexing."
^ ((super longAt: byteAddress) bitShift: 32) bitOr: (super longAt: byteAddress + 4)
]
{ #category : #'memory access' }
InterpreterSimulatorMSB64 >> longAt: byteAddress put: a64BitValue [
"Note: Adjusted for Smalltalk's 1-based array indexing."
super longAt: byteAddress put: (a64BitValue bitShift: -32).
super longAt: byteAddress + 4 put: (a64BitValue bitAnd: 16rFFFFFFFF).
^ a64BitValue
]
{ #category : #'memory access' }
InterpreterSimulatorMSB64 >> wordSize [
"overridden for 64-bit images..."
^8
]