EFI Byte Code Virtual Machine
Version 1.10 12/01/02 19-19
BEHAVIOR AND RESTRICTIONS:
• For the CALL32 forms, if Operand 1 is indirect, then the immediate data is interpreted as an
index, and the Operand 1 value is fetched from memory address [R
1
+ Index32].
• For the CALL32 forms, if Operand 1 is direct, then the immediate data is considered a signed
immediate value and is added to the Operand 1 register contents such that Operand 1 = R
1
+
Immed32.
• For the CALLEX forms, the VM must fix up the stack pointer and execute a call to native code
in a manner compatible with the native code such that the callee is able to access arguments
passed on the VM stack..
• For the CALLEX forms, the value returned by the callee should be returned in R7.
• For the CALL64 forms, the Operand 1 fields are ignored.
• If Byte7:Bit6 = 1 (CALL64), then Byte1:Bit4 is assumed to be 0 (absolute address)
• For CALL32 forms, if Operand 1 register = R0, then the register operand is ignored and only
the immediate data is used in the calculation of the call address.
• Prior to the call, the VM will decrement the stack pointer R0 by 16 bytes, and store the 64-bit
return address on the stack.
• Offsets for relative calls are relative to the address of the instruction following the CALL
instruction.