Por ejemplo: Si yo llamo a la funcion show_prefixe(output_file, prefix_cs_override), la funcion trabaja bien, y imprime dentro del fichero la palabra "CS" tal como corresponde según mi tabla.
La funcion trabaja bien con todos los prefijos, excepto con los tres primeros: LOCK, REP y REPNE. No sé porque cuando llamo la funcion con los valores respectivos de cada uno, imprime "UNDEF" (caso por default si no consigue ningun case para ese valor). No entiendo porque toma el caso por default, si existen casos respectivos para cada prefijo (LOCK, REP, y REPNE)
He estado dando vueltas, pero aún no consigo ayuda. Espero que ustedes me ayuden a descifrar este misterioso problema. Aqui va el codigo.
Código
#include <stdio.h> ///Prefixes lock and repeat (group one) #define prefix_lock 0xF0 #define prefix_repne 0xF2 #define prefix_rep 0xF3 ///Prefixes segmet override (group two) #define prefix_cs_override 0x2E #define prefix_ss_override 0x36 #define prefix_ds_override 0x3E #define prefix_es_override 0x26 #define prefix_fs_override 0x64 #define prefix_gs_override 0x65 ///Branch hints goes here. ///Operand-size override (group three) #define prefix_operand_size_override 0x66 ///Address-size override (group four) #define prefix_address_size_override 0x67 int show_prefixe(FILE *my_output, char prefix){ switch(prefix){ case prefix_lock: break; case prefix_repne: break; case prefix_rep: break; case prefix_ss_override: break; case prefix_cs_override: break; case prefix_ds_override: break; case prefix_es_override: break; case prefix_fs_override: break; case prefix_gs_override: break; case prefix_operand_size_override: break; case prefix_address_size_override: break; default: break; } } int main() { FILE *output; show_prefixe(output, prefix_rep); return 0; }
¿Será que el compilador tiene bugs? No sé, lo pregunto porque no estoy usando la ultima version, solo estoy usando la previa a la ultima. No sé realmente que ocurre.
Gracias de antemano por su ayuda.