summaryrefslogtreecommitdiff
path: root/ecomp-c/asm-i386.c
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2020-04-04 20:47:30 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2020-04-04 20:47:30 +0200
commit2c51e60910bae46a9b0490997acd12d55a545f6a (patch)
tree17db171df52744a96071c686b9bdb11727085a60 /ecomp-c/asm-i386.c
parentbd925b1b511c0c1fbe256d4ed46ee6d211be0362 (diff)
downloadcompilertests-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.c30
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: