~ubuntu-branches/ubuntu/raring/yasm/raring

« back to all changes in this revision

Viewing changes to modules/arch/lc3b/lc3bbc.c

  • Committer: Package Import Robot
  • Author(s): Sam Hocevar
  • Date: 2013-01-15 21:05:07 UTC
  • mfrom: (1.1.6) (2.1.6 sid)
  • Revision ID: package-import@ubuntu.com-20130115210507-6dof3v3wo8cpbw8c
Tags: 1.2.0-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
 * POSSIBILITY OF SUCH DAMAGE.
26
26
 */
27
27
#include <util.h>
28
 
/*@unused@*/ RCSID("$Id: lc3bbc.c 2130 2008-10-07 05:38:11Z peter $");
29
28
 
30
29
#include <libyasm.h>
31
30
 
44
43
                               long new_val, /*@out@*/ long *neg_thres,
45
44
                               /*@out@*/ long *pos_thres);
46
45
static int lc3b_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp,
 
46
                                unsigned char *bufstart,
47
47
                                void *d, yasm_output_value_func output_value,
48
48
                                /*@null@*/ yasm_output_reloc_func output_reloc);
49
49
 
165
165
}
166
166
 
167
167
static int
168
 
lc3b_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp, void *d,
 
168
lc3b_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp,
 
169
                     unsigned char *bufstart, void *d,
169
170
                     yasm_output_value_func output_value,
170
171
                     /*@unused@*/ yasm_output_reloc_func output_reloc)
171
172
{
172
173
    lc3b_insn *insn = (lc3b_insn *)bc->contents;
173
174
    /*@only@*/ yasm_intnum *delta;
 
175
    unsigned long buf_off = (unsigned long)(*bufp - bufstart);
174
176
 
175
177
    /* Output opcode */
176
178
    YASM_SAVE_16_L(*bufp, insn->opcode);
181
183
            break;
182
184
        case LC3B_IMM_4:
183
185
            insn->imm.size = 4;
184
 
            if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d))
 
186
            if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
185
187
                return 1;
186
188
            break;
187
189
        case LC3B_IMM_5:
188
190
            insn->imm.size = 5;
189
191
            insn->imm.sign = 1;
190
 
            if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d))
 
192
            if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
191
193
                return 1;
192
194
            break;
193
195
        case LC3B_IMM_6_WORD:
194
196
            insn->imm.size = 6;
195
 
            if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d))
 
197
            if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
196
198
                return 1;
197
199
            break;
198
200
        case LC3B_IMM_6_BYTE:
199
201
            insn->imm.size = 6;
200
202
            insn->imm.sign = 1;
201
 
            if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d))
 
203
            if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
202
204
                return 1;
203
205
            break;
204
206
        case LC3B_IMM_8:
205
207
            insn->imm.size = 8;
206
 
            if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d))
 
208
            if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
207
209
                return 1;
208
210
            break;
209
211
        case LC3B_IMM_9_PC:
220
222
 
221
223
            insn->imm.size = 9;
222
224
            insn->imm.sign = 1;
223
 
            if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d))
 
225
            if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
224
226
                return 1;
225
227
            break;
226
228
        case LC3B_IMM_9:
227
229
            insn->imm.size = 9;
228
 
            if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d))
 
230
            if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
229
231
                return 1;
230
232
            break;
231
233
        default: