--- gforth/compat/struct.fs 1997/06/23 15:54:02 1.3 +++ gforth/compat/struct.fs 2007/02/08 14:07:28 1.7 @@ -23,9 +23,11 @@ \ from MEMORY : \ allocate -: nalign ( addr1 n -- addr2 ) -\ addr2 is the aligned version of addr1 wrt the alignment size n - 1- tuck + swap invert and ; +: naligned ( addr1 n -- addr2 ) + \ addr2 is the aligned version of addr1 wrt the alignment size n + 1- tuck + swap invert and ; + +: nalign naligned ; \ old name, obsolete : dofield ( -- ) does> ( name execution: addr1 -- addr2 ) @@ -37,8 +39,8 @@ does> ( name execution: -- ) drop ; : create-field ( align1 offset1 align size "name" -- align2 offset2 ) - create rot dup , ( align1 align size offset1 ) - + >r nalign r> ; + create swap rot over nalign dup , ( align1 size align offset ) + rot + >r nalign r> ; : field ( align1 offset1 align size "name" -- align2 offset2 ) \ name execution: addr1 -- addr2 @@ -66,6 +68,12 @@ does> ( name execution: -- ) cell% 2* 2constant double% \ memory allocation words +: %alignment ( align size -- align ) + drop ; + +: %size ( align size -- size ) + nip ; + : %align ( align size -- ) drop here swap nalign here - allot ; @@ -76,5 +84,5 @@ cell% 2* 2constant double% : %allocate ( align size -- addr ior ) nip allocate ; -: %alloc ( size align -- addr ) +: %alloc ( align size -- addr ) %allocate throw ;