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);
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)
172
173
lc3b_insn *insn = (lc3b_insn *)bc->contents;
173
174
/*@only@*/ yasm_intnum *delta;
175
unsigned long buf_off = (unsigned long)(*bufp - bufstart);
175
177
/* Output opcode */
176
178
YASM_SAVE_16_L(*bufp, insn->opcode);
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))
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))
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))
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))
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))
209
211
case LC3B_IMM_9_PC:
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))
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))