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

📄 arm2x86_movl.c

📁 嵌入式的开发的一个开源仿真程序源码,其是开源的,很不错的奉献给大家
💻 C
📖 第 1 页 / 共 3 页
字号:
}

uint8_t *
get_op_movl_r5_T1(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r5_T1");
	st->Reg[5] = T1;
	OP_END("get_op_movl_r5_T1");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r6_T1(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r6_T1");
	st->Reg[6] = T1;
	OP_END("get_op_movl_r6_T1");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r7_T1(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r7_T1");
	st->Reg[7] = T1;
	OP_END("get_op_movl_r7_T1");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r8_T1(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r8_T1");
	st->Reg[8] = T1;
	OP_END("get_op_movl_r8_T1");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r9_T1(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r9_T1");
	st->Reg[9] = T1;
	OP_END("get_op_movl_r9_T1");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r10_T1(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r10_T1");
	st->Reg[10] = T1;
	OP_END("get_op_movl_r10_T1");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r11_T1(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r11_T1");
	st->Reg[11] = T1;
	OP_END("get_op_movl_r11_T1");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r12_T1(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r12_T1");
	st->Reg[12] = T1;
	OP_END("get_op_movl_r12_T1");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r13_T1(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r13_T1");
	st->Reg[13] = T1;
	OP_END("get_op_movl_r13_T1");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r14_T1(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r14_T1");
	st->Reg[14] = T1;
	OP_END("get_op_movl_r14_T1");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r15_T1(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r15_T1");
	st->Reg[15] = (T1 & (~3)) + 4;
	OP_END("get_op_movl_r15_T1");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r0_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r0_T2");
	st->Reg[0] = T2;
	OP_END("get_op_movl_r0_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r1_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r1_T2");
	st->Reg[1] = T2;
	OP_END("get_op_movl_r1_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r2_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r2_T2");
	st->Reg[2] = T2;
	OP_END("get_op_movl_r2_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r3_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r3_T2");
	st->Reg[3] = T2;
	OP_END("get_op_movl_r3_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r4_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r4_T2");
	st->Reg[4] = T2;
	OP_END("get_op_movl_r4_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r5_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r5_T2");
	st->Reg[5] = T2;
	OP_END("get_op_movl_r5_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r6_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r6_T2");
	st->Reg[6] = T2;
	OP_END("get_op_movl_r6_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r7_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r7_T2");
	st->Reg[7] = T2;
	OP_END("get_op_movl_r7_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r8_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r8_T2");
	st->Reg[8] = T2;
	OP_END("get_op_movl_r8_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r9_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r9_T2");
	st->Reg[9] = T2;
	OP_END("get_op_movl_r9_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r10_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r10_T2");
	st->Reg[10] = T2;
	OP_END("get_op_movl_r10_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r11_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r11_T2");
	st->Reg[11] = T2;
	OP_END("get_op_movl_r11_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r12_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r12_T2");
	st->Reg[12] = T2;
	OP_END("get_op_movl_r12_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r13_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r13_T2");
	st->Reg[13] = T2;
	OP_END("get_op_movl_r13_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r14_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r14_T2");
	st->Reg[14] = T2;
	OP_END("get_op_movl_r14_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_r15_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_r15_T2");
	st->Reg[15] = (T2 & (~3)) + 4;
	OP_END("get_op_movl_r15_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

int		op_movl_reg_Tx_maxlen;
int		op_movl_reg_Tx_array_maxlen[Tx_MAX+1];
op_table_t	op_movl_reg_Tx[Tx_MAX+1][16];
int
op_movl_reg_Tx_init()
{
	int	i, j;

	op_movl_reg_Tx[0][0].op = get_op_movl_r0_T0(&op_movl_reg_Tx[0][0].len);	
	op_movl_reg_Tx[0][1].op = get_op_movl_r1_T0(&op_movl_reg_Tx[0][1].len);
	op_movl_reg_Tx[0][2].op = get_op_movl_r2_T0(&op_movl_reg_Tx[0][2].len);
	op_movl_reg_Tx[0][3].op = get_op_movl_r3_T0(&op_movl_reg_Tx[0][3].len);
	op_movl_reg_Tx[0][4].op = get_op_movl_r4_T0(&op_movl_reg_Tx[0][4].len);
	op_movl_reg_Tx[0][5].op = get_op_movl_r5_T0(&op_movl_reg_Tx[0][5].len);
	op_movl_reg_Tx[0][6].op = get_op_movl_r6_T0(&op_movl_reg_Tx[0][6].len);
	op_movl_reg_Tx[0][7].op = get_op_movl_r7_T0(&op_movl_reg_Tx[0][7].len);
	op_movl_reg_Tx[0][8].op = get_op_movl_r8_T0(&op_movl_reg_Tx[0][8].len);
	op_movl_reg_Tx[0][9].op = get_op_movl_r9_T0(&op_movl_reg_Tx[0][9].len);
	op_movl_reg_Tx[0][10].op = get_op_movl_r10_T0(&op_movl_reg_Tx[0][10].len);
	op_movl_reg_Tx[0][11].op = get_op_movl_r11_T0(&op_movl_reg_Tx[0][11].len);
	op_movl_reg_Tx[0][12].op = get_op_movl_r12_T0(&op_movl_reg_Tx[0][12].len);
	op_movl_reg_Tx[0][13].op = get_op_movl_r13_T0(&op_movl_reg_Tx[0][13].len);
	op_movl_reg_Tx[0][14].op = get_op_movl_r14_T0(&op_movl_reg_Tx[0][14].len);
	op_movl_reg_Tx[0][15].op = get_op_movl_r15_T0(&op_movl_reg_Tx[0][15].len);

	op_movl_reg_Tx[1][0].op = get_op_movl_r0_T1(&op_movl_reg_Tx[1][0].len);
	op_movl_reg_Tx[1][1].op = get_op_movl_r1_T1(&op_movl_reg_Tx[1][1].len);
	op_movl_reg_Tx[1][2].op = get_op_movl_r2_T1(&op_movl_reg_Tx[1][2].len);
	op_movl_reg_Tx[1][3].op = get_op_movl_r3_T1(&op_movl_reg_Tx[1][3].len);
	op_movl_reg_Tx[1][4].op = get_op_movl_r4_T1(&op_movl_reg_Tx[1][4].len);
	op_movl_reg_Tx[1][5].op = get_op_movl_r5_T1(&op_movl_reg_Tx[1][5].len);
	op_movl_reg_Tx[1][6].op = get_op_movl_r6_T1(&op_movl_reg_Tx[1][6].len);
	op_movl_reg_Tx[1][7].op = get_op_movl_r7_T1(&op_movl_reg_Tx[1][7].len);
	op_movl_reg_Tx[1][8].op = get_op_movl_r8_T1(&op_movl_reg_Tx[1][8].len);
	op_movl_reg_Tx[1][9].op = get_op_movl_r9_T1(&op_movl_reg_Tx[1][9].len);
	op_movl_reg_Tx[1][10].op = get_op_movl_r10_T1(&op_movl_reg_Tx[1][10].len);
	op_movl_reg_Tx[1][11].op = get_op_movl_r11_T1(&op_movl_reg_Tx[1][11].len);
	op_movl_reg_Tx[1][12].op = get_op_movl_r12_T1(&op_movl_reg_Tx[1][12].len);
	op_movl_reg_Tx[1][13].op = get_op_movl_r13_T1(&op_movl_reg_Tx[1][13].len);
	op_movl_reg_Tx[1][14].op = get_op_movl_r14_T1(&op_movl_reg_Tx[1][14].len);
	op_movl_reg_Tx[1][15].op = get_op_movl_r15_T1(&op_movl_reg_Tx[1][15].len);

	op_movl_reg_Tx[2][0].op = get_op_movl_r0_T2(&op_movl_reg_Tx[2][0].len);
	op_movl_reg_Tx[2][1].op = get_op_movl_r1_T2(&op_movl_reg_Tx[2][1].len);
	op_movl_reg_Tx[2][2].op = get_op_movl_r2_T2(&op_movl_reg_Tx[2][2].len);
	op_movl_reg_Tx[2][3].op = get_op_movl_r3_T2(&op_movl_reg_Tx[2][3].len);
	op_movl_reg_Tx[2][4].op = get_op_movl_r4_T2(&op_movl_reg_Tx[2][4].len);
	op_movl_reg_Tx[2][5].op = get_op_movl_r5_T2(&op_movl_reg_Tx[2][5].len);
	op_movl_reg_Tx[2][6].op = get_op_movl_r6_T2(&op_movl_reg_Tx[2][6].len);
	op_movl_reg_Tx[2][7].op = get_op_movl_r7_T2(&op_movl_reg_Tx[2][7].len);
	op_movl_reg_Tx[2][8].op = get_op_movl_r8_T2(&op_movl_reg_Tx[2][8].len);
	op_movl_reg_Tx[2][9].op = get_op_movl_r9_T2(&op_movl_reg_Tx[2][9].len);
	op_movl_reg_Tx[2][10].op = get_op_movl_r10_T2(&op_movl_reg_Tx[2][10].len);
	op_movl_reg_Tx[2][11].op = get_op_movl_r11_T2(&op_movl_reg_Tx[2][11].len);
	op_movl_reg_Tx[2][12].op = get_op_movl_r12_T2(&op_movl_reg_Tx[2][12].len);
	op_movl_reg_Tx[2][13].op = get_op_movl_r13_T2(&op_movl_reg_Tx[2][13].len);
	op_movl_reg_Tx[2][14].op = get_op_movl_r14_T2(&op_movl_reg_Tx[2][14].len);
	op_movl_reg_Tx[2][15].op = get_op_movl_r15_T2(&op_movl_reg_Tx[2][15].len);

	op_movl_reg_Tx_maxlen = 0;
	for(i = 0; i <= Tx_MAX; i++) {
		op_movl_reg_Tx_array_maxlen[i] = 0;
		for(j = 0; j <= 15; j++){
			if (op_movl_reg_Tx[i][j].len <= 0) {
				return(-1);
			}
			if (op_movl_reg_Tx[i][j].len > op_movl_reg_Tx_array_maxlen[i]) {
				op_movl_reg_Tx_array_maxlen[i] = op_movl_reg_Tx[i][j].len;
			}
		}
		if (op_movl_reg_Tx_array_maxlen[i] > op_movl_reg_Tx_maxlen) {
			op_movl_reg_Tx_maxlen = op_movl_reg_Tx_array_maxlen[i];
		}
	}

	return(0);
}
//--------------------------------------------------------------------------------------------------
uint8_t *
get_op_movl_eax_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_eax_T2");
	__asm__ __volatile__ ("movl	%"AREG_T2", %eax");
	OP_END("get_op_movl_eax_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

op_table_t	op_movl_eax_T2;
//--------------------------------------------------------------------------------------------------
uint8_t *
get_op_movl_trap_im(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_trap_im");
	st->trap = ULONG_MAX;
	OP_END("get_op_movl_trap_im");
	*len = end - begin;
	if (*len <= sizeof(ULONG_MAX)) {
		return(NULL);
	}
	else {
		*len -= sizeof(ULONG_MAX);
	}
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_trap_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_trap_T2");
	st->trap = T2;
	OP_END("get_op_movl_trap_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

op_table_t	op_movl_trap_im;
op_table_t	op_movl_trap_T2;
//--------------------------------------------------------------------------------------------------
uint8_t *
get_op_movl_T0_T2(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_T0_T2");
	T0 = T2;
	OP_END("get_op_movl_T0_T2");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

uint8_t *
get_op_movl_T2_T1(int *len)
{
	uint8_t		*ret;
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_movl_T2_T1");
	T2 = T1;
	OP_END("get_op_movl_T2_T1");
	*len = end - begin;
	ret=(uint8_t *)begin;

	return(ret);
}

op_table_t	op_movl_T0_T2;
op_table_t	op_movl_T2_T1;
//--------------------------------------------------------------------------------------------------
int
arm2x86_movl_init()
{
	if (op_movl_Tx_im_init()) {
		return(-1);
	}
	if (op_movl_tmpx_im_init()) {
		return(-1);
	}
	if (op_movl_Tx_reg_init()) {
		return(-1);
	}
	if (op_movl_reg_Tx_init()) {
		return(-1);
	}

	op_movl_eax_T2.op = get_op_movl_eax_T2(&op_movl_eax_T2.len);
	if (op_movl_eax_T2.len <= 0)
		return(-1);

	op_movl_trap_im.op = get_op_movl_trap_im(&op_movl_trap_im.len);
	if (op_movl_trap_im.len <= 0)
		return(-1);

	op_movl_trap_T2.op = get_op_movl_trap_T2(&op_movl_trap_T2.len);
	if (op_movl_trap_T2.len <= 0)
		return(-1);

	op_movl_T0_T2.op = get_op_movl_T0_T2(&op_movl_T0_T2.len);
	if (op_movl_T0_T2.len <= 0)
		return(-1);

	op_movl_T2_T1.op = get_op_movl_T2_T1(&op_movl_T2_T1.len);
	if (op_movl_T2_T1.len <= 0)
		return(-1);

	return(0);
}

⌨️ 快捷键说明

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