diff options
author | H. Peter Anvin <hpa@zytor.com> | 2007-11-13 09:37:59 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2007-11-13 09:37:59 -0800 |
commit | d1fb15c154b99f9ca8d2356fa9057827b0ab89af (patch) | |
tree | e6e95a1979107466eadfad29577e278ee1273890 /nasmlib.h | |
parent | a5fb90834aa2e849e67bf45b478d498a6cb72062 (diff) | |
download | nasm-d1fb15c154b99f9ca8d2356fa9057827b0ab89af.tar.gz nasm-d1fb15c154b99f9ca8d2356fa9057827b0ab89af.tar.bz2 nasm-d1fb15c154b99f9ca8d2356fa9057827b0ab89af.zip |
Address data is int64_t; simplify writing an address object
Address data is always int64_t even if the size itself is smaller;
this was broken on bigendian hosts (still need testing!)
Create simple "write sized object" macros.
Diffstat (limited to 'nasmlib.h')
-rw-r--r-- | nasmlib.h | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -209,12 +209,24 @@ void standard_extension(char *inname, char *outname, char *extension, WRITECHAR(p,(v) >> 56); \ } while (0) +#define WRITEADDR(p,v,s) \ + do { \ + int _s = (s); \ + uint64_t _v = (v); \ + while (_s--) { \ + WRITECHAR(p,_v); \ + _v >>= 8; \ + } \ + } while(0) + /* * and routines to do the same thing to a file */ +#define fwriteint8_t(d,f) putc(d,f) void fwriteint16_t(int data, FILE * fp); void fwriteint32_t(int32_t data, FILE * fp); void fwriteint64_t(int64_t data, FILE * fp); +void fwriteaddr(int64_t data, int size, FILE * fp); /* * Routines to manage a dynamic random access array of int32_ts which |