Mercurial > repos > simple16
comparison src/asm.c @ 10:9f575f77a157
Fix parsing of hex literals in assembler
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 27 Mar 2016 17:32:09 -0700 |
parents | 74a6d629b78f |
children | d4112095b93f |
comparison
equal
deleted
inserted
replaced
9:a3f14b00aead | 10:9f575f77a157 |
---|---|
201 int in_string = 0; | 201 int in_string = 0; |
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, 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') { |
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 |
319 return 0; | 319 return 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, 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') { |
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) { |