File: outcode.c

package info (click to toggle)
icmake 6.30-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 2,360 kB
  • ctags: 1,415
  • sloc: ansic: 7,727; makefile: 1,465; sh: 244; asm: 126; cpp: 39
file content (31 lines) | stat: -rw-r--r-- 995 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
                        O U T C O D E . C
*/

#include "iccomp.h"

void outcode(ESTRUC_ *ep, int value, register unsigned size)
{
    register unsigned
        codelen;
    char
        buffer[2];

    codelen = ep->code ?                    /* use local codelen in register */
                ep->codelen
            :
                0;                          /* 0 if not yet any code */

    if (size == sizeof(char))               /* assign char to write */
        buffer[0] = (char)value;
    else                                    /* use char[2] as intermediate */
        *(INT16 *)buffer = (INT16)value;    /* to store INT16 value        */

                                            /* make room for new code */
    ep->code = xrealloc(ep->code, (codelen + size) * sizeof(char));

                                            /* append the new code */
    memcpy(ep->code + codelen, buffer, size);

    ep->codelen = codelen + size;           /* update the codelen-counter */
}