8086 backend and stack problem
Erdem Guven
zuencap@yahoo.com
Thu Jul 20 11:05:00 GMT 2006
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
More information about the Gcc
mailing list