MyData
dato de
se coloca en la dirección $1C, con el primer elemento de
inmediatamente en $20. Note que la dirección de inicio ($18) es arbitraria y seguramente
cambiara según se modifique el código o si el objeto mismo se incluye en otra aplicación.
Long Address —
(Long Offset)
—
[Long Symbol] —
[MyData]
640,000
Data as longs
—
0
196
Data as bytes
—
Byte Address
—
$18
$19
(Byte Offset)
—
(-8)
(-7)
[Byte Symbol] —
Figura 2-2: Estructura de datos y direccionamiento de datos tamaño long
Cerca de la parte superior del código la primer línea ejecutable del método
Temp := long[@MyData][1]
Temp
variable local
a $BB50; el valor leído de la dirección de memoria principal $1C. La
dirección $1C se determine por la dirección del símbolo
bytes). La siguiente simplificación progresiva demuestra esto.
long[@MyData][1] long[$18][1] long[$18 + (1*4)] long[$1C]
La siguiente línea long[@MyList][0] := Temp + $01234567, escribe un valor tamaño long a
la memoria principal. Activa el valor en memoria principal en la dirección $20 a $012400BC.
La dirección $20 se calculo de la dirección del símbolo MyList ($20) mas Offset 0 (0 bytes).
long[@MyList][0] long[$20][0] long[$20 + (0*4)] long[$20]
El valor $012400BC se deriva del valor actual de
$01234567 que es igual a $012400BC.
Direccionado Memoria Principal
Como la Figura 2-2 sugiere, la memoria principal es un grupo de bytes juntos (ver el renglón
"datos como bytes") que también pueden leerse como longs (4-byte sets) cuando se hace
apropiadamente. De hecho el ejemplo muestra que las direcciones se calculan en términos de
bytes. Este concepto es un tema consistente para cualquier instrucción que usa direcciones.
2: Referencia de Lenguaje Spin –
$18
$1C
(0)
(1)
$BB50
9
0
$50 $BB $00 $00 $44 $55 $99 $FF 232
$1A
$1B
$1C
$1D
$1E
(-6)
(-5)
(-4)
(-3)
(-2)
, lee un valor tamaño long de memoria principal. Activa la
$20
(2)
$FF995544
$1F
$20
$21
$22
$23
(-1)
(0)
(1)
(2)
(3)
[MyList]
MyData
($18) mas el Offset 1 (4
Temp
mas $012400BC; $BB50 +
LONG
MyList
seguido
$24
(3)
1,000
3
0
0
$24
$25
$26
$27
(4)
(5)
(6)
(7)
MemTest
,