Hi, I'm writing an 8086 backend. Short info about backend: Basicly I converted m32c backend for 8086. For the moment, it can compile 16-32 bits integer & 16-32 bits pointer codes. 16 bits pointer codes can be assembled with as but for 32 bits I convert at&t assembly output to intel and use nasm to compile.
Problem: I'm using the backend in a project. I want to compile some codes in 16 bits int mode and others in 32 bits int. I figured out that gcc uses int sized blocks to store arguments, passed to a function, in stack. I mean if function get a short (16 bits) as a parameter it pushes 4 bytes to stack in 32bits integer mode and just 2 bytes in 16 bits mode. Is there an easy way to force gcc to use another size? Some defines in i86.h that I think may help for an answer: #define BITS_PER_UNIT 8 #define UNITS_PER_WORD 2 #define POINTER_SIZE (TARGET_PTR32 ? 32 : 16) #define PARM_BOUNDARY 8 #define STACK_BOUNDARY 8 #define FUNCTION_BOUNDARY 8 #define BIGGEST_ALIGNMENT 8 #define STRICT_ALIGNMENT 0 #define SLOW_BYTE_ACCESS 1 #define INT_TYPE_SIZE (TARGET_INT32 ? 32 : 16) #define SHORT_TYPE_SIZE 16 #define LONG_TYPE_SIZE 32 #define LONG_LONG_TYPE_SIZE 64 Thanks Erdem Guven __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com