⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jit-labels.h

📁 基于LWVCL开发的库
💻 H
字号:
/* * powerpc/jit-labels.h * * Copyright (c) 2002, 2004 The University of Utah and the Flux Group. * All rights reserved. * * @JANOSVM_KAFFE_JANOSVM_LICENSE@ */#ifndef __powerpc_jit_labels_h#define __powerpc_jit_labels_h/* Extra label types. *//* 26 bit displacement */#define Llong26  (Larchdepend + 0)/* 16 bit displacement */#define Llong16  (Larchdepend + 1)/* 16 bit displacement, no alignment restrictions.  */#define Llong16noalign  (Larchdepend + 2)/* 32 bit displacement broken into two instructions. */#define Llong16x16 (Larchdepend + 3)/* XXX not very different from Lnegframe... */#define Lsavedregs (Larchdepend + 4)/* Update the source register in a stmw. */#define Lreg_s (Larchdepend + 5)#define FILL_LABEL_Llong16x16(P, V, L) \{ \	ppc_code_t *_code = (ppc_code_t *)(P); \	ppc_code_t _disp = (V); \\	_code[0] |= ppc_lo16(_disp); \	_code[1] |= ppc_ha16(_disp); \	/* \	 *                 ^^^^^^^^^^^^ Need to clear out the high order bits \	 * if the offset is negative. \	 */ \}#define FILL_LABEL_Llong26(P, V, L) \{ \	ppc_code_t *_code = (ppc_code_t *)(P); \	ppc_code_t _disp = (V); \\	assert(((_disp & ~PPC_LI_MASK) == 0x00000000) || \	       ((_disp & ~PPC_LI_MASK) == 0xFC000000)); \\	_code[0] |= (_disp & PPC_LI_MASK); \	/* \	 *                 ^^^^^^^^^^^^ Need to clear out the high order bits \	 * if the offset is negative. \	 */ \}#define FILL_LABEL_Llong16(P, V, L) \{ \	ppc_code_t *_code = (ppc_code_t *)(P); \	ppc_code_t _disp = (V); \\	assert(((_disp & ~PPC_BD_MASK) == 0x00000000) || \	       ((_disp & ~PPC_BD_MASK) == 0xFFFF0000)); \\	_code[0] |= (_disp & PPC_BD_MASK); \}#define FILL_LABEL_Llong16noalign(P, V, L) \{ \	ppc_code_t *_code = (ppc_code_t *)(P); \	int _disp = (V); \\	assert(((_disp & ~PPC_D_MASK) == 0x00000000) || \	       ((_disp & ~PPC_D_MASK) == ~PPC_D_MASK)); \\	_code[0] |= (_disp & PPC_D_MASK); \}#define FILL_LABEL_Lsavedregs(P, V, L) \{ \	int frame_size = 0, saved_registers; \\	saved_registers = maxLocal - PPC_ARG_REGISTER_COUNT; \	if( saved_registers < 0 ) \		saved_registers = 0; \	saved_registers = maxStack + maxTemp + 18; \	if( (KaffeJIT3_getFirstConst() != KaffeJIT3_getCurrConst()) || maxLocal || maxTemp ) \	{ \		saved_registers += 1; /* r31 */ \	} \	frame_size += -SLOTSIZE * saved_registers; \	if( ((L)->type & Lfrommask) == Lrelative ) \	{ \		frame_size += (L)->from; \	} \	FILL_LABEL_Llong16noalign(P, frame_size, L); \}#define FILL_LABEL_Lframe(P, V, L, neg) \{ \	int frame_size = sizeof(ppc_stack_frame_t), saved_registers; \\	saved_registers = maxLocal - PPC_ARG_REGISTER_COUNT; \	if( saved_registers < 0 ) \		saved_registers = 0; \	saved_registers += maxStack + maxTemp; \	if( (KaffeJIT3_getFirstConst() != KaffeJIT3_getCurrConst()) || maxLocal || maxTemp ) \	{ \		saved_registers += 1; /* r31 */ \	} \	saved_registers += (saved_registers * 2) + 18; \	frame_size += SLOTSIZE * saved_registers; \	if( ((L)->type & Lfrommask) == Lrelative ) \	{ \		frame_size += (L)->from; \	} \	if( neg ) \		frame_size = -frame_size; \	FILL_LABEL_Llong16noalign(P, frame_size, L); \}#define FILL_LABEL_Lreg_s(P, V, L) \{ \	ppc_code_t *_code = (ppc_code_t *)(P); \	int saved_registers; \\	saved_registers = maxLocal - PPC_ARG_REGISTER_COUNT; \	if( saved_registers < 0 ) \		saved_registers = 0; \	saved_registers = maxStack + maxTemp; \	if( (KaffeJIT3_getFirstConst() != KaffeJIT3_getCurrConst()) || maxLocal || maxTemp ) \	{ \		saved_registers += 1; /* r31 */ \	} \	_code[0] |= PPC_SET_RS((32 - saved_registers)); \}#define EXTRA_LABELS(P, V, L) \	case Lframe: \		FILL_LABEL_Lframe(P, V, L, 0); \		break; \	case Lnegframe: \		FILL_LABEL_Lframe(P, V, L, 1); \		break; \	case Llong26: \		FILL_LABEL_Llong26(P, V, L); \		break; \	case Llong16: \		FILL_LABEL_Llong16(P, V, L); \		break; \	case Llong16noalign: \		FILL_LABEL_Llong16noalign(P, V, L); \		break; \	case Llong16x16: \		FILL_LABEL_Llong16x16(P, V, L); \		break; \	case Lsavedregs: \		FILL_LABEL_Lsavedregs(P, V, L); \		break; \	case Lreg_s: \		FILL_LABEL_Lreg_s(P, V, L); \		break;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -