comparison src/asm.c @ 46:51672bd41cdd

Rework data segment setup to allow a stack segment and to add space for push and pop instructions
author Michael Pavone <pavone@retrodev.com>
date Tue, 30 Aug 2016 20:50:54 -0700
parents 718aaedc4582
children f9846719aa26
comparison
equal deleted inserted replaced
45:5338b9affd09 46:51672bd41cdd
118 } else { 118 } else {
119 ret.immed_min = ret.immed_max = 0; 119 ret.immed_min = ret.immed_max = 0;
120 } 120 }
121 return ret; 121 return ret;
122 } 122 }
123 index = find_string_arr(mnemonics_single_reg, mnemonic, SETDATABANKS+1); 123 index = find_string_arr(mnemonics_single_reg, mnemonic, SETVBR+1);
124 if (index > SETDATABANKS) { 124 if (index > SETVBR) {
125 ret.base = 0xFFFF; 125 ret.base = 0xFFFF;
126 return ret; 126 return ret;
127 } 127 }
128 ret.base = index << 8 | SINGLE_REG << 4 | SINGLE_SOURCE; 128 ret.base = index << 8 | SINGLE_REG << 4 | SINGLE_SOURCE;
129 ret.immed_min = ret.immed_max = 0; 129 ret.immed_min = ret.immed_max = 0;
305 value = strtol(arg+1, NULL, 10); 305 value = strtol(arg+1, NULL, 10);
306 if (value >= 0 && value < 16) { 306 if (value >= 0 && value < 16) {
307 *inst |= value << arg_shift; 307 *inst |= value << arg_shift;
308 return 1; 308 return 1;
309 } 309 }
310 }
311 if (!strcmp(arg, "db")) {
312 *inst |= REG_DB << arg_shift;
313 return 1;
314 }
315 if (!strcmp(arg, "sp")) {
316 *inst |= REG_SP << arg_shift;
317 return 1;
310 } 318 }
311 if (!strcmp(arg, "pc")) { 319 if (!strcmp(arg, "pc")) {
312 *inst |= REG_PC << arg_shift; 320 *inst |= REG_PC << arg_shift;
313 return 1; 321 return 1;
314 } 322 }