Autor Tema: acerca del porqué de la alineación en los dsPIC  (Leído 2383 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado azael007

  • PIC10
  • *
  • Mensajes: 3
acerca del porqué de la alineación en los dsPIC
« en: 09 de Noviembre de 2007, 18:49:25 »
Qué tal, saludo  a todos los foreros, tengo una pregunta, estoy trabajando en un proyecto de fin de carrera, necesito usar unas tablas  con valores inicializados, buscando a través de las aplicaciones que tiene  microchip en su página  he podido crear la tabla, sin embargo aun no doy con la razón por la cual siempre al iniciar con la declaración de la tabla tienen que especificar un valor de alineación (ejem .align  4 ), ¿alguien sabe para qué es esto y qué criterio se sigue para especificarlo aparte de que tiene que ser un múltiplo de base 2?
Muchas gracias de antemano.

Aqui pongo el ejemplo del que me estoy guiando:
******************************************************
.section .vocabulary, "x"
  .align  4 
  .global   SR_VOCABULARY
SR_VOCABULARY:

   .pword  0x6e7520,0x636f6c,0x206b
   .pword  0x6f6420,0x206e77
   .pword  0x616820,0x20746c
   .pword  0x696820,0x206867
   .pword  0x6e6920
   .pword  0x656c20,0x207466
   .pword  0x6f6c20,0x2077
   .pword  0x656d20,0x756964,0x206d
   .pword  0x756f20,0x2074
   .pword  0x697220,0x746867
   .pword  0x707520
   .pword  0x6e7520,0x6f6e6b,0x206e77
******************************************************

Desconectado unoquepasa

  • PIC12
  • **
  • Mensajes: 65
Re: acerca del porqué de la alineación en los dsPIC
« Respuesta #1 en: 13 de Enero de 2008, 00:11:55 »

        Hola, descubriste ya porque? Yo no tengo mucho idea tampoco, porque estoy empezando con los dspic también, pero consulta este documento en la web de microchip "DS70151a", en la página 75 tienes una breve explicación.
       Yo creo que es un tema, de que como las direcciones son de 8 bits, pero el procesador trabaja con 16bits, es para alinear los datos y que no quede un dato colgando entre dos direcciones de memoria... ejemplo:

       quieres guardar el valor 0xFFFF si no lo alineas te podía quedar así (lo siguiente que voy a poner corresponderían a 4 celdas del mapa de memoria, cada celda de 8 bits, pero claro, el procesador trabaja con 16 bits; con lo que en realidad son 2 celdas):

               0xXX    0xFF
               0xFF     0xXX

          mientras que al alinearlo quedaría:

              0xFF     0xFF             bien alineado y no colgando entre dos "celdas" de 16 bits. Aunque ya te digo que no estoy seguro, pero por ahí van los tiros.

Un saludo! :-/


 

anything