History

Detect correct instruction with incorrect operands

Display a different warning when an instruction is recognized by tcc but the operands found do not correspond to the constraints of the instruction.

Thomas Preud'homme committed 13 years ago

Commit a1a691a1 parent 45b35a33 files · +6 −2Browse files

Unified · Split

3 files
  1. i386-asm.c +4 −0
  2. i386-asm.h +1 −1
  3. x86_64-asm.h +1 −1
i386-asm.c+4−0
@@ -27,6 +27,7 @@ · 26 unmodified lines
27 27
28#define TOK_ASM_first TOK_ASM_clc28#define TOK_ASM_first TOK_ASM_clc
29#define TOK_ASM_last TOK_ASM_emms29#define TOK_ASM_last TOK_ASM_emms
30#define TOK_ASM_alllast TOK_ASM_pxor
30 31
31#define OPC_JMP 0x01 /* jmp operand */32#define OPC_JMP 0x01 /* jmp operand */
32#define OPC_B 0x02 /* only used with OPC_WL */33#define OPC_B 0x02 /* only used with OPC_WL */
@@ -715,6 +716,9 @@ ST_FUNC void asm_opcode(TCCState *s1, int opcode) · 682 unmodified lines
715 g(b >> 8);716 g(b >> 8);
716 g(b);717 g(b);
717 return;718 return;
719 } else if (opcode <= TOK_ASM_alllast) {
720 tcc_error("bad operand with opcode '%s'",
721 get_tok_str(opcode, NULL));
718 } else {722 } else {
719 tcc_error("unknown opcode '%s'",723 tcc_error("unknown opcode '%s'",
720 get_tok_str(opcode, NULL));724 get_tok_str(opcode, NULL));
i386-asm.h+1−1
@@ -463,7 +463,7 @@ ALT(DEF_ASM_OP2(psrlq, 0x0f73, 2, OPC_MODRM, OPT_IM8, OPT_MMX )) · 462 unmodified lines
463 DEF_ASM_OP2(punpcklbw, 0x0f60, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )463 DEF_ASM_OP2(punpcklbw, 0x0f60, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )
464 DEF_ASM_OP2(punpcklwd, 0x0f61, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )464 DEF_ASM_OP2(punpcklwd, 0x0f61, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )
465 DEF_ASM_OP2(punpckldq, 0x0f62, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )465 DEF_ASM_OP2(punpckldq, 0x0f62, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )
466 DEF_ASM_OP2(pxor, 0x0fef, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )466 DEF_ASM_OP2(pxor, 0x0fef, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX ) /* must be last !OP0 */
467 467
468#undef ALT468#undef ALT
469#undef DEF_ASM_OP0469#undef DEF_ASM_OP0
x86_64-asm.h+1−1
@@ -438,7 +438,7 @@ ALT(DEF_ASM_OP2(psrlq, 0x0f73, 2, OPC_MODRM, OPT_IM8, OPT_MMX )) · 437 unmodified lines
438 DEF_ASM_OP2(punpcklbw, 0x0f60, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )438 DEF_ASM_OP2(punpcklbw, 0x0f60, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )
439 DEF_ASM_OP2(punpcklwd, 0x0f61, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )439 DEF_ASM_OP2(punpcklwd, 0x0f61, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )
440 DEF_ASM_OP2(punpckldq, 0x0f62, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )440 DEF_ASM_OP2(punpckldq, 0x0f62, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )
441 DEF_ASM_OP2(pxor, 0x0fef, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX )441 DEF_ASM_OP2(pxor, 0x0fef, 0, OPC_MODRM, OPT_EA | OPT_MMX, OPT_MMX ) /* must be last !OP0 */
442 442
443#undef ALT443#undef ALT
444#undef DEF_ASM_OP0444#undef DEF_ASM_OP0

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t