/* 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); }
/* 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); }
/* 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); }
/* 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); }