2009-06-03 15 views
6

¿Hay una convención de códigos para el ensamblaje (principalmente PIC)?¿Hay una convención de código para el ensamblaje (principalmente PIC)?

+2

No lo llamaría fuera de tema, pero mi convención de código es usar C o C++, no ensamblador. –

+0

también de acuerdo con los comentarios. mi convención sería usar el ensamblaje como último recurso de optimización de velocidad/espacio. – kenny

+0

Necesito reducir el precio del producto. C no es la mejor opción para mí. –

Respuesta

7

yo era capaz de encontrar el Assembly Language Style Guide(PDF) que le pueden interesar.

+1

Este es el estilo general, pero los comentarios son bastante pésimos (de muy bajo nivel o imprecisos). – starblue

+0

Es un buen documento para comenzar. Pero es como se comentó anteriormente, arriba –

+0

He hecho la misma pregunta aquí: http://electronics.stackexchange.com/questions/7468/are-herehere-any-code-conventions-for-assembly y tal vez usted gustaría responder allí también. –

0

no creo que haya nada formal, pero leer las muestras de codificación en su sitio web le da una idea de los modismos habituales. solo tenga en cuenta que hay muchas 'contribuciones' de muchos aficionados diferentes, y que pueden no ser tan agradables.

también verifica otros proyectos, la mayoría tendrá código feo; pero encontrarás una o dos gemas.

nunca programé en PIC, pero me gustó leer el código. Recuerdo vagamente un "sistema operativo en tiempo real" con un flujo de ejecución realmente agradable y limpio. No recuerdo cuán consistente era el estilo de codificación, pero empezaría allí.

que es mejor leer la mayoría de ellos y cuando es tan fácil como la prosa, a continuación, encontrará su estilo

6

Al escribir montaje, que es bastante útil y no del todo por la borda para comentario a cada línea

+0

Solo iba a decir algo similar. Tengo una asamblea antigua de hace años con algunos comentarios, y no entiendo nada de eso. – Zifre

0

estoy con Jason S - utilizar un compilador de C, si es posible, incluso si al final de la incrustación de unas pocas líneas de lenguaje ensamblador en su archivo ".c" usando la palabra clave "__asm".

Si debe escribir programas completos en ensamblador para el PIC, la convención de llamada a función recomendada es PIClist: PIC Paging and PCLATH.

0

Realmente dependería del modelo de PIC que esté utilizando. Por ejemplo, PIC16 y PIC18 tienen muchos ejemplos de ensamblaje que se pueden encontrar fácilmente en la web.

Sin embargo, modelos como PIC24 y PIC32 están mucho más orientados hacia C. Hay muchos ejemplos de CIP en C que se pueden encontrar en el sitio web para su modelo de PIC específico. Estos modelos de PIC aún se pueden programar en ensamblaje, pero hay muy pocos ejemplos de cómo hacerlo. El mejor recurso para eso está en MPLAB en "Ayuda", revise el "Contenido de la Ayuda" de cualquier ensamblador que use su modelo PIC. Esto le mostrará algunos ejemplos, así como instrucciones sobre cómo programar en el ensamblaje PIC y realizar tareas sencillas de PIC, como definir la memoria o escribir macros.

2

Depende de si su programación en ensamblador o utilizando un compilador c para crear el ensamblado para usted. Si el rendimiento es importante, no use un compilador c, escriba el ensamble usted mismo.

pero, en general, las convenciones son para comentar cada línea, usar subrutinas simples con nombres de puntero significativos. hay algunas cosas que haría comentarios sobre el bloque, es decir

start: movlw 0x24  // \ 
      movf count  // put 24 into count 


    MyCount: decfsz count  //decrement count and exit if done 
      goto myCount //do the loop 
      goto exit  //count is done exit 

esto es la codificación típica, la primera columna de la dirección de los punteros siguiente para el comando y se asocia VARs que suelen definir los VARs en la sección de cabecera antes de la programa real, pero eso es particular para el ensamblador que está usando. algunos no le dan la opción de puntero variable y tiene que usar una ubicación de memoria directa. Si observas el código comentado que vuelve a salir del desensamblador, se vería así.

0020 movlw 0x24 
    0021 movf 0x25  // 0x25 = memory address of count 
    0022 decfsz 0x25 
    0023 goto 0x0022 // loop back to 0x22 until count = 0 
    0024 goto 0x01FF 

entonces como comentario asegúrese de grupo para el uso por código 'nop' s para compensar código para buenos números redondos como empezar a tener una dirección de 20 direcciones que salen de entre 2 y 20 clara para interrupciones y similares.Dependiendo del chip, escribo mucho código para el 12f675, así que ese es el modelo que suelo usar.

también guardan el código en subrutinas claras simples y las direcciones deben ser números redondos agradables dejando bloques de 10 o menos entre sus subrutinas iniciales, siempre puede volver atrás y comprimir su código más tarde. y siempre comente su código, no puede comentarlo lo suficiente.

También usualmente coloco mi initinage lo más cerca posible al final de la memoria, dejando el espacio máximo para ese programa real.

Espero que ayude a algunos.

Cuestiones relacionadas