diff options
author | Benedikt Böhm <bb@xnull.de> | 2009-07-06 18:15:25 +0200 |
---|---|---|
committer | Benedikt Böhm <bb@xnull.de> | 2009-07-06 18:15:25 +0200 |
commit | 8f00dd8b77df280f7456cd3dfe7a147916730434 (patch) | |
tree | 8c09fef545f99d75faea05e9d6cb7986f175511c | |
parent | d517f267930e6c7c156bfd29f5c63bf604e9841e (diff) | |
download | swppy-8f00dd8b77df280f7456cd3dfe7a147916730434.tar.gz swppy-8f00dd8b77df280f7456cd3dfe7a147916730434.tar.xz swppy-8f00dd8b77df280f7456cd3dfe7a147916730434.zip |
fix segmentation fault on syntax error
-rw-r--r-- | src/emu/asm.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/emu/asm.c b/src/emu/asm.c index 8e39202..4548b48 100644 --- a/src/emu/asm.c +++ b/src/emu/asm.c @@ -23,31 +23,31 @@ uint32_t compile(const char *line) } /* ADD, SUB, MUL, DIV, MOD, AND, OR */ - if (sscanf(line, "%s r%d, r%d, r%d", mnem, &a, &b, &c) == 4) + if (sscanf(line, "%4s r%d, r%d, r%d", mnem, &a, &b, &c) == 4) return mnemonic2opc(mnem) | REGa(a) | REGb(b) | REGc(c); /* LW, SW */ - if (sscanf(line, "%s r%d, r%d, %d", mnem, &a, &b, &c) == 4) + if (sscanf(line, "%4s r%d, r%d, %d", mnem, &a, &b, &c) == 4) return mnemonic2opc(mnem) | REGa(a) | REGb(b) | IMMc(c); /* CMP */ - if (sscanf(line, "%s r%d, r%d", mnem, &a, &b) == 3) + if (sscanf(line, "%4s r%d, r%d", mnem, &a, &b) == 3) return mnemonic2opc(mnem) | REGa(a) | REGb(b); /* MOV, BEZ */ - if (sscanf(line, "%s r%2d, %d", mnem, &a, &c) == 3) + if (sscanf(line, "%4s r%2d, %d", mnem, &a, &c) == 3) return mnemonic2opc(mnem) | REGa(a) | IMMc(c); /* EQ, NE, LT, LE, GE, GT, PUSH, POP */ - if (sscanf(line, "%s r%d", mnem, &a) == 2) + if (sscanf(line, "%4s r%d", mnem, &a) == 2) return mnemonic2opc(mnem) | REGa(a); /* JMP, CALL */ - if (sscanf(line, "%s %d", mnem, &c) == 2) + if (sscanf(line, "%4s %d", mnem, &c) == 2) return mnemonic2opc(mnem) | IMMc(c); /* RET, SYS */ - if (sscanf(line, "%s", mnem) == 1) + if (sscanf(line, "%4s", mnem) == 1) return mnemonic2opc(mnem); return 0xFFFFFFFF; |