Пример #1
0
/* asm_arch_amd64_function_end */
static int _asm_arch_amd64_function_end(void)
{
#ifdef DEBUG
	fprintf(stderr, "DEBUG: %s()\n", __func__);
#endif
	return asm_instruction(_asm_as, "leave", 0);
}
Пример #2
0
/* asm_arch_amd64_function_call */
static int _asm_arch_amd64_function_call(char const * name)
{
	AsmArchOperand arg;

#ifdef DEBUG
	fprintf(stderr, "DEBUG: %s()\n", __func__);
#endif
	/* FIXME give a real argument */
	memset(&arg, 0, sizeof(arg));
	arg.definition = AO_IMMEDIATE(0, 0, 32);
	arg.value.immediate.value = 0;
	return asm_instruction(_asm_as, "call", 1, &arg);
}
Пример #3
0
/* libasm_asm_instruction */
static PyObject * _libasm_asm_instruction(PyObject * self, PyObject * args)
{
	Asm * a;
	char const * name;
	int ret;

	/* FIXME really parse the arguments */
	if(!PyArg_ParseTuple(args, "Os", &self, &name))
		return NULL;
	if((a = PyCapsule_GetPointer(self, _libasm_asm_name)) == NULL)
		return NULL;
	ret = asm_instruction(a, name, 0);
	return Py_BuildValue("i", ret);
}
Пример #4
0
/* asm_arch_amd64_function_begin */
static int _asm_arch_amd64_function_begin(char const * name)
{
	AsmArchOperand arg1;
	AsmArchOperand arg2;

#ifdef DEBUG
	fprintf(stderr, "DEBUG: %s()\n", __func__);
#endif
	if(asm_set_function(_asm_as, name, -1, -1) != 0)
		return -1;
	/* FIXME give real arguments */
	memset(&arg1, 0, sizeof(arg1));
	arg1.definition = AO_IMMEDIATE(0, 0, 32);
	arg1.value.immediate.value = 0;
	memset(&arg2, 0, sizeof(arg2));
	arg2.definition = AO_IMMEDIATE(0, 0, 32);
	arg2.value.immediate.value = 0;
	return asm_instruction(_asm_as, "enter", 2, &arg1, &arg2);
}