root/dasm_proto.h

/* [<][>][^][v][top][bottom][index][help] */
   1 /*
   2 ** DynASM encoding engine prototypes.
   3 ** Copyright (C) 2005-2017 Mike Pall. All rights reserved.
   4 ** Released under the MIT license. See dynasm.lua for full copyright notice.
   5 */
   6 
   7 #ifndef _DASM_PROTO_H
   8 #define _DASM_PROTO_H
   9 
  10 #include <stddef.h>
  11 #include <stdarg.h>
  12 
  13 #define DASM_IDENT      "DynASM 1.4.0"
  14 #define DASM_VERSION    10400   /* 1.4.0 */
  15 
  16 #ifndef Dst_DECL
  17 #define Dst_DECL        dasm_State **Dst
  18 #endif
  19 
  20 #ifndef Dst_REF
  21 #define Dst_REF         (*Dst)
  22 #endif
  23 
  24 #ifndef DASM_FDEF
  25 #define DASM_FDEF       extern
  26 #endif
  27 
  28 #ifndef DASM_M_GROW
  29 #define DASM_M_GROW(ctx, t, p, sz, need) \
  30   do { \
  31     size_t _sz = (sz), _need = (need); \
  32     if (_sz < _need) { \
  33       if (_sz < 16) _sz = 16; \
  34       while (_sz < _need) _sz += _sz; \
  35       (p) = (t *)realloc((p), _sz); \
  36       if ((p) == NULL) exit(1); \
  37       (sz) = _sz; \
  38     } \
  39   } while(0)
  40 #endif
  41 
  42 #ifndef DASM_M_FREE
  43 #define DASM_M_FREE(ctx, p, sz) free(p)
  44 #endif
  45 
  46 /* Internal DynASM encoder state. */
  47 typedef struct dasm_State dasm_State;
  48 
  49 
  50 /* Initialize and free DynASM state. */
  51 DASM_FDEF void dasm_init(Dst_DECL, int maxsection);
  52 DASM_FDEF void dasm_free(Dst_DECL);
  53 
  54 /* Setup global array. Must be called before dasm_setup(). */
  55 DASM_FDEF void dasm_setupglobal(Dst_DECL, void **gl, unsigned int maxgl);
  56 
  57 /* Grow PC label array. Can be called after dasm_setup(), too. */
  58 DASM_FDEF void dasm_growpc(Dst_DECL, unsigned int maxpc);
  59 
  60 /* Setup encoder. */
  61 DASM_FDEF void dasm_setup(Dst_DECL, const void *actionlist);
  62 
  63 /* Feed encoder with actions. Calls are generated by pre-processor. */
  64 DASM_FDEF void dasm_put(Dst_DECL, int start, ...);
  65 
  66 /* Link sections and return the resulting size. */
  67 DASM_FDEF int dasm_link(Dst_DECL, size_t *szp);
  68 
  69 /* Encode sections into buffer. */
  70 DASM_FDEF int dasm_encode(Dst_DECL, void *buffer);
  71 
  72 /* Get PC label offset. */
  73 DASM_FDEF int dasm_getpclabel(Dst_DECL, unsigned int pc);
  74 
  75 #ifdef DASM_CHECKS
  76 /* Optional sanity checker to call between isolated encoding steps. */
  77 DASM_FDEF int dasm_checkstep(Dst_DECL, int secmatch);
  78 #else
  79 #define dasm_checkstep(a, b)    0
  80 #endif
  81 
  82 
  83 #endif /* _DASM_PROTO_H */

/* [<][>][^][v][top][bottom][index][help] */