/* *Returna32-bitvalue.
*/
%def op_return(is_object=False):
GET_VREG %eax, rINST # eax <- vAA
% if not is_object:
// In case we're going back to compiled code, put the
// result also in a xmm register.
movd %eax, %xmm0
CFI_REMEMBER_STATE
movl -4(rREFS), %esp
DROP_PARAMETERS_SAVES
CFI_DEF_CFA(esp, CALLEE_SAVES_SIZE)
RESTORE_ALL_CALLEE_SAVES
ret
CFI_RESTORE_STATE
NTERP_DEF_CFA CFI_REFS
%def op_return_void():
// Thread fence for constructor is a no-op on x86_64.
CFI_REMEMBER_STATE
movl -4(rREFS), %esp
DROP_PARAMETERS_SAVES
CFI_DEF_CFA(esp, CALLEE_SAVES_SIZE)
RESTORE_ALL_CALLEE_SAVES
ret
CFI_RESTORE_STATE
NTERP_DEF_CFA CFI_REFS
%def op_return_wide():
// In case we're going back to compiled code, put the
// result also in a xmm register.
GET_WIDE_FP_VREG %xmm0, rINST
GET_VREG %eax, rINST # eax <- vAA
GET_VREG_HIGH %edx, rINST # edx <- vAA
CFI_REMEMBER_STATE
movl -4(rREFS), %esp
DROP_PARAMETERS_SAVES
CFI_DEF_CFA(esp, CALLEE_SAVES_SIZE)
RESTORE_ALL_CALLEE_SAVES
ret
CFI_RESTORE_STATE
NTERP_DEF_CFA CFI_REFS
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.