Mercurial > repos > simple16
comparison src/asm.c @ 12:d4112095b93f
Allow negative decimal literals
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 27 Mar 2016 21:07:41 -0700 |
parents | 9f575f77a157 |
children | fb14515266f4 |
comparison
equal
deleted
inserted
replaced
11:04d8efe7a1f0 | 12:d4112095b93f |
---|---|
202 while ((arg = in_string ? linebuf : get_arg(&linebuf))) | 202 while ((arg = in_string ? linebuf : get_arg(&linebuf))) |
203 { | 203 { |
204 //TODO: actual error checking | 204 //TODO: actual error checking |
205 if (arg[0] == '$' || (arg[0] == '0' && arg[1] == 'x')) { | 205 if (arg[0] == '$' || (arg[0] == '0' && arg[1] == 'x')) { |
206 value = strtol(arg[0] == '$' ? arg+1 : arg+2, NULL, 16); | 206 value = strtol(arg[0] == '$' ? arg+1 : arg+2, NULL, 16); |
207 } else if (arg[0] >= '0' && arg[0] <= '9') { | 207 } else if (arg[0] >= '0' && arg[0] <= '9' || arg[0] == '-') { |
208 value = strtol(arg, NULL, 10); | 208 value = strtol(arg, NULL, 10); |
209 } else if (arg[0] == '"') { | 209 } else if (arg[0] == '"') { |
210 if (arg[1] == '"') { | 210 if (arg[1] == '"') { |
211 //emtpy string or end of string | 211 //emtpy string or end of string |
212 in_string = 0; | 212 in_string = 0; |
320 } | 320 } |
321 | 321 |
322 //TODO: actual error checking | 322 //TODO: actual error checking |
323 if (arg[0] == '$' || (arg[0] == '0' && arg[1] == 'x')) { | 323 if (arg[0] == '$' || (arg[0] == '0' && arg[1] == 'x')) { |
324 value = strtol(arg[0] == '$' ? arg+1 : arg+2, NULL, 16); | 324 value = strtol(arg[0] == '$' ? arg+1 : arg+2, NULL, 16); |
325 } else if (arg[0] >= '0' && arg[0] <= '9') { | 325 } else if (arg[0] >= '0' && arg[0] <= '9' || arg[0] == '-') { |
326 value = strtol(arg, NULL, 10); | 326 value = strtol(arg, NULL, 10); |
327 } else { | 327 } else { |
328 label *l = find_label(meta, arg); | 328 label *l = find_label(meta, arg); |
329 if (!l) { | 329 if (!l) { |
330 l = add_label(meta, arg, 0, 0); | 330 l = add_label(meta, arg, 0, 0); |