Untitled diff

생성일 비교 결과 만료 없음
7 삭제
22
1 추가
16
genLowcodeAlloca32
genLowcodeAlloca32
<option: #LowcodeVM> "Lowcode instruction generator"
<option: #LowcodeVM> "Lowcode instruction generator"
| size |
| size |


(size := backEnd availableRegisterOrNoneFor: self liveRegisters) = NoReg ifTrue:
self allocateOneRegisterForLowcodeInto: [:reg| size := reg].
[self ssAllocateRequiredReg:
(size := optStatus isReceiverResultRegLive
ifTrue: [Arg0Reg]
ifFalse: [ReceiverResultReg])].
size = ReceiverResultReg ifTrue:
[ optStatus isReceiverResultRegLive: false ].
self ssNativeTop nativePopToReg: size.
self ssNativeTop nativePopToReg: size.
self ssNativePop: 1.
self ssNativePop: 1.


self MoveAw: coInterpreter nativeStackPointerAddress R: TempReg.
self MoveAw: coInterpreter nativeStackPointerAddress R: TempReg.
self SubR: size R: TempReg.
self SubR: size R: TempReg.
self AndCq: -16 R: TempReg.
self AndCq: -16 R: TempReg.
self MoveR: TempReg R: size.
self MoveR: TempReg R: size.
self MoveR: size Aw: coInterpreter nativeStackPointerAddress.
self MoveR: size Aw: coInterpreter nativeStackPointerAddress.
self ssPushNativeRegister: size.
self ssPushNativeRegister: size.


^ 0
^ 0