WORD
– Referencia de Lenguaje Spin
Temp
El valor $ABCD se derivo del valor actual de
más $0123; $AAAA + $0123 que es igual
a $ABCD.
Direccionado Memoria Principal
Como sugiere la Figura 2-5, la memoria principal es realmente un set de bytes seguidos (ver
renglón "dato como bytes") que pueden leerse como words (pares de 2 bytes) cuando se hace
apropiadamente. El ejemplo anterior muestra que las direcciones son calculadas en términos
de bytes. Este concepto es un tema consistente para cualquier instrucción que usa direcciones.
La memoria principal es ultimadamente direccionada en términos de bytes sin importar el
tamaño del valor que se esta accesando; byte, word, o long. Esto tiene ventajas cuando se
piensa en cuantos bytes, words y longs se relacionan, pero puede causar problemas cuando se
piensa en términos de casos diferentes de un solo tamaño, como words.
WORD
Por esta razón el asignador
tiene una útil característica para facilitar direccionamiento
de una perspectiva céntrica de word. Su campo BaseAddress cuando se combina con el ampo
opcional Offset opera de una forma de base consciente.
Imagine accesar words de memoria de un punto de inicio conocido (BaseAddress). Quizá
piense en el siguiente word o words desde una cierta distancia de ese punto (Offset). Mientras
esos words están realmente a un cierto numero de "bytes" mas allá de un punto dado, es mas
fácil pensar en words mas allá de un punto (Ej.: el 4to word, en vez de el word que empieza
WORD
despues del 6to byte). El designador
lo trata apropiadamente tomando el valor de un
valor Offset (unidades de words), multiplicado por 2 (numero de bytes por word), y suma ese
resultado a BaseAddress para determinar la memoria word correcta a leer. también limpia el
bit mas bajo de BaseAddress para asegurar la dirección referenciada como word alineada.
MyData
word[@MyData][0]
así, cuando los valores de la lista
,
lee el primer valor word,
word[@MyData][1]
word[@MyData][2]
lee el segundo valor word y
lee el tercero.
Si el campo Offset no fuera usado, las instrucciones de arriba tendría algo como esto
word[@MyData]
word[@MyData+2]
word[@MyData+4]
,
, y
, respectivamente. El resultado es el
mismo, pero el camino como se escribe puede no ser tan claro.
DAT
Para mayor explicación de como los datos se arreglan en memoria, ver la sección
Declaración de Data(Sintaxis 1) en Pág. 103.
Una Referencia Alternativa de Memoria
Hay todavía otra forma de accesar los datos desde el código en el ejemplo de arriba; podría
referenciar los símbolos de datos directamente. Por ejemplo esta instrucción lee el primer
MyData
word de la lista
:
Pagina 236 · Manual Propeller v1.1