be_emit_string(env, reg_name);
}
+void ia32_emit_8bit_source_register(ia32_emit_env_t *env, const ir_node *node, int pos)
+{
+ const arch_register_t *reg = get_in_reg(env, node, pos);
+ const char *reg_name = arch_register_get_name(reg);
+
+ assert(pos < get_irn_arity(node));
+
+ be_emit_char(env, '%');
+ be_emit_char(env, reg_name[1]);
+ be_emit_char(env, 'l');
+}
+
+void ia32_emit_16bit_source_register(ia32_emit_env_t *env, const ir_node *node, int pos)
+{
+ const arch_register_t *reg = get_in_reg(env, node, pos);
+ const char *reg_name = arch_register_get_name(reg);
+
+ assert(pos < get_irn_arity(node));
+
+ be_emit_char(env, '%');
+ be_emit_string(env, ®_name[1]);
+}
+
void ia32_emit_dest_register(ia32_emit_env_t *env, const ir_node *node, int pos) {
const arch_register_t *reg = get_out_reg(env, node, pos);
const char *reg_name = arch_register_get_name(reg);
}
be_emit_char(env, ')');
}
+
+ /* special case if nothing is set */
+ if(ent == NULL && offs == 0 && !has_base && !has_index) {
+ be_emit_char(env, '0');
+ }
}
/*************************************************
if(attr->symconst == NULL || attr->offset != 0) {
if(attr->symconst != NULL)
be_emit_char(env, '+');
- be_emit_irprintf(env->emit, "%d", attr->offset);
+ be_emit_irprintf(env->emit, "0x%X", attr->offset);
}
}
be_emit_cstring(env, "\tmov");
be_emit_string(env, sign_suffix);
ia32_emit_mode_suffix_mode(env, smaller_mode);
- be_emit_cstring(env, "l %");
+ be_emit_cstring(env, "l ");
ia32_emit_am(env, node);
be_emit_cstring(env, ", ");
ia32_emit_dest_register(env, node, 0);