David Pethes wrote: > pointer. So I mixed the two codes and come with something like this: > > function evk_malloc (size: longword): pointer; > const > ALIGNMENT = 16; > var > ptr: pointer; > begin > ptr := getmem(size + ALIGNMENT); > result := Align (ptr, ALIGNMENT); > if result = ptr then > pbyte(result) += 16;
Why not use ALIGNMENT here also? > //store offset to original address > (pbyte(result) - 1)^ := result - ptr; > end; > > Is this correct to use? Wouldn't be there any catches for example when > running on 64-bit machine? This looks ok. BTW, GetMem already returns 16 byte aligned blocks. If it does not, it's considered a bug. > Also, does FPC support aligning stack variables and record members on > mod16 addresses like GCC > (http://gcc.gnu.org/onlinedocs/gcc-4.2.2/gcc/Variable-Attributes.html#Variable-Attributes) Don't know. Micha _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal