diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2020-04-04 20:47:30 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2020-04-04 20:47:30 +0200 |
commit | 2c51e60910bae46a9b0490997acd12d55a545f6a (patch) | |
tree | 17db171df52744a96071c686b9bdb11727085a60 /ecomp-c/asm-i386.c | |
parent | bd925b1b511c0c1fbe256d4ed46ee6d211be0362 (diff) | |
download | compilertests-2c51e60910bae46a9b0490997acd12d55a545f6a.tar.gz compilertests-2c51e60910bae46a9b0490997acd12d55a545f6a.tar.bz2 |
some better assembly error messages
Diffstat (limited to 'ecomp-c/asm-i386.c')
-rw-r--r-- | ecomp-c/asm-i386.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/ecomp-c/asm-i386.c b/ecomp-c/asm-i386.c index 2a9ffdb..939e4dc 100644 --- a/ecomp-c/asm-i386.c +++ b/ecomp-c/asm-i386.c @@ -1115,7 +1115,7 @@ static int relative_distance( OpcodeInfo *opcode_info, int src_addr, int dest_ad int rel = dest_addr - src_addr - opcode_info->incr; if( rel < -128 || rel > 127 ) { - Abort( "Relative jump is too long" ); + Abort( "Relative jump is too long in '%s'", opcodename[opcode_info->opcode] ); } return rel; @@ -1146,21 +1146,21 @@ static void emit_opcode( OpcodeInfo *opcode_info ) Emit( "%c", 0xA1 ); Emit_double_little_endian( opcode_info->operand->next->addr ); } else { - Abort( "Unsupported mov operand combination" ); + Abort( "Unsupported operand combination in 'mov'" ); } break; case OPCODE_PUSH: if( opcode_info->operand->type == OPERAND_REGISTER ) { Emit( "%c", 0x50 | opcode_info->operand->reg ); } else { - Abort( "push expects a register as argument" ); + Abort( "'push' expects a register as argument" ); } break; case OPCODE_POP: if( opcode_info->operand->type == OPERAND_REGISTER ) { Emit( "%c", 0x58 | opcode_info->operand->reg ); } else { - Abort( "push expects a register as argument" ); + Abort( "'push' expects a register as argument" ); } break; case OPCODE_ADD: @@ -1178,21 +1178,21 @@ static void emit_opcode( OpcodeInfo *opcode_info ) Emit( "%c%c", 0x29, 0xC0 | ( opcode_info->operand->reg ) | ( opcode_info->operand->next->reg << 3 ) ); } else { - Abort( "Unsupported sub addressing mode" ); + Abort( "Unsupported addressing mode in 'sub'" ); } break; case OPCODE_MUL: if( opcode_info->operand->type == OPERAND_REGISTER ) { Emit( "%c%c", 0xF7, 0xE0 | opcode_info->operand->reg ); } else { - Abort( "Unsupported mul" ); + Abort( "Unsupported addressing mode in 'mul'" ); } break; case OPCODE_DIV: if( opcode_info->operand->type == OPERAND_REGISTER ) { Emit( "%c%c", 0xF7, 0xF0 | opcode_info->operand->reg ); } else { - Abort( "Unsupported div" ); + Abort( "Unsupported addressing mode in 'div'" ); } break; case OPCODE_CMP: @@ -1201,56 +1201,56 @@ static void emit_opcode( OpcodeInfo *opcode_info ) Emit( "%c%c", 0x39, 0xC0 | ( opcode_info->operand->reg ) | ( opcode_info->operand->next->reg << 3 ) ); } else { - Abort( "Unsupported cmp addressing mode" ); + Abort( "Unsupported addressing mode in 'cmp'" ); } break; case OPCODE_JMP: if( opcode_info->operand->type == OPERAND_MEMORY_DIRECT ) { Emit( "%c%c", 0xEB, relative_distance( opcode_info, opcode_info->addr, opcode_info->operand->addr ) ); } else { - Abort( "jmp expects a jump label" ); + Abort( "'jmp' expects a jump label" ); } break; case OPCODE_JE: if( opcode_info->operand->type == OPERAND_MEMORY_DIRECT ) { Emit( "%c%c", 0x74, relative_distance( opcode_info, opcode_info->addr, opcode_info->operand->addr ) ); } else { - Abort( "je expects a jump label" ); + Abort( "'je' expects a jump label" ); } break; case OPCODE_JNE: if( opcode_info->operand->type == OPERAND_MEMORY_DIRECT ) { Emit( "%c%c", 0x75, relative_distance( opcode_info, opcode_info->addr, opcode_info->operand->addr ) ); } else { - Abort( "jne expects a jump label" ); + Abort( "'jne' expects a jump label" ); } break; case OPCODE_JB: if( opcode_info->operand->type == OPERAND_MEMORY_DIRECT ) { Emit( "%c%c", 0x72, relative_distance( opcode_info, opcode_info->addr, opcode_info->operand->addr ) ); } else { - Abort( "jne expects a jump label" ); + Abort( "'jne' expects a jump label" ); } break; case OPCODE_JBE: if( opcode_info->operand->type == OPERAND_MEMORY_DIRECT ) { Emit( "%c%c", 0x76, relative_distance( opcode_info, opcode_info->addr, opcode_info->operand->addr ) ); } else { - Abort( "jne expects a jump label" ); + Abort( "'jne' expects a jump label" ); } break; case OPCODE_JA: if( opcode_info->operand->type == OPERAND_MEMORY_DIRECT ) { Emit( "%c%c", 0x77, relative_distance( opcode_info, opcode_info->addr, opcode_info->operand->addr ) ); } else { - Abort( "ja expects a jump label" ); + Abort( "'ja' expects a jump label" ); } break; case OPCODE_JAE: if( opcode_info->operand->type == OPERAND_MEMORY_DIRECT ) { Emit( "%c%c", 0x73, relative_distance( opcode_info, opcode_info->addr, opcode_info->operand->addr ) ); } else { - Abort( "jae expects a jump label" ); + Abort( "'jae' expects a jump label" ); } break; default: |