Mercurial > repos > simple16
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 } |