Puede hacer absolutamente un programa c desde ensamblador. El problema es que puede no parecerse a lo que estás pensando, o tal vez lo hará. Mi PIC está oxidado, pero utilizando otro ensamblador, decir que tenía
add r1,r2
En C que permite decir que se convierte en
r1 = r1 + r2;
Posiblemente sea más legible. Perderá el sentido de los nombres de las variables, tal vez porque los valores saltan de la memoria a los registros y viceversa, y los registros se vuelven a utilizar. Si usted está hablando de las fotos antiguas que tenía lo que dos registros de un acumulador y otro, así que en realidad podría ser más fácil ya que las variables estaban en la memoria en su mayor parte, nos fijamos en la dirección, algo así como
q = mem[0x12];
e = q;
q = mem[0x13];
e = e + q;
mem[0x12] = e;
largo y extraído, pero está claro que mem [0x12] = mem [0x12] + mem [0x13];
Estas ubicaciones de memoria son variables probables que no saltan como código C compilado para un procesador con un montón de registros. La imagen podría facilitar la determinación de las variables y luego buscar y reemplazar para nombrarlas en el archivo.
Lo que está buscando se llama una traducción binaria estática, no necesariamente una traducción de un binario a otro (un procesador a otro) pero en este caso una traducción de pic binary a C. Idealmente, usted querría tomar el ensamblador dado en la nota de la aplicación y ensamblarlo en un binario utilizando las herramientas de microchip, luego hacer la traducción. También puede realizar una traducción binaria dinámica, pero es aún menos probable que encuentre una de ellas y normalmente no resulta en C, sino en un binario a otro. ¿Alguna vez se ha preguntado cómo funcionan esos joysticks de $ 15 en Wal-Mart con pac-man y galaga? La rom del arcade se convirtió utilizando la traducción binaria estática, optimizada y limpiada, y el C o cualquier lenguaje intermedio compilado para el nuevo procesador de destino en el cuadro de la computadora de mano. Me imagino que no todos se hicieron de esta manera, pero estoy bastante seguro de que algunos lo fueron.
La pregunta del millón de dólares, ¿puedes encontrar un traductor binario estático para una foto? Quién sabe, probablemente debas escribir uno tú mismo. Y adivina qué significa eso, escribes un desensamblador, y en lugar de desensamblar una instrucción en la sintaxis del ensamblador nativo como add r0, r1, tienes tu desensamblador print r0 = r0 + r1; En el momento en que termine este desensamblador, conocerá el lenguaje ensamblador de imágenes tan bien que no necesitará el conversor asm a C. Usted tiene un problema de huevo y pollo.
Francamente, den una razón por la que debe ser posible. – Gerhard
Si quiere entender el código, la única forma es aprender este lenguaje ensamblador. La traducción automática le dará algo ilegible. Tal vez incluso más ilegible que la fuente. Y el decompilador (si existe) no puede ayudarlo, si este código está escrito a mano (no compilado primero). Pero si solo quieres ejecutar/portar el código, mira mi publicación. – zxcat
@Gerhard Ya hay un compilador de ensamblador lenguaje-a-C llamado Boomerang. Algunos programas de lenguaje ensamblador pueden descompilarse automáticamente en C, como [este de aquí] (http://boomerang.sourceforge.net/cando.php?hidemenu). –