static void make_instruction (void) { int i; unsigned int shift; for (i = 0; i < currInsn.nargs; i++) { argument a; memset (&a, 0, sizeof (a)); a.type = getargtype (instruction->operands[i].op_type); if (instruction->operands[i].op_type == cst4 || instruction->operands[i].op_type == rbase_dispu4) cst4flag = 1; a.size = getbits (instruction->operands[i].op_type); shift = instruction->operands[i].shift; make_argument (&a, shift); currInsn.arg[i] = a; } /* Calculate instruction size (in bytes). */ currInsn.size = instruction->size + (size_changed ? 1 : 0); /* Now in bits. */ currInsn.size *= 2; }
void make_argument_test() { //Create argument int *myArg = (int*) malloc(sizeof(int)); int result; argument_t myArgument = make_argument((void*) myArg, DELETE, (void*) &result); //Asserts assert(myArgument.arg == myArg); assert(myArgument.del_arg == DELETE); assert(myArgument.result == &result); //Free memory free(myArg); }