Prácticas de Métodos y Cogs
El área de trabajo es para almacenar valores que existen durante ciertas tareas y evaluaciones de
expresiones. Por ejemplo el método de
La primera en la expresión
. Después del cálculo * el
2
sencillo. Este elemento se queda en la pila hasta que se termina el ciclo
ocurren dos expansiones y contracciones similares de la pila con
repeat reps
*
2
waitcnt(rate/2 + cnt)
suma a
.
cnt
En el caso del método
Blink
es 3 longs: uno para detener el resultado de
para los diversos cálculos con operadores binarios como multiplicar (*) y dividir (/). Conociendo esto
podemos verificar el número de variables long que el Cog necesita en la pila para ejecutar el método
listado abajo. Así el total de espacio de pila (ej., número de variables long) que necesita un Cog para
ejecutar el método
Blink
•
2 – Regresos de direcciones
•
1 – Resultado variable (cada método tiene esto incluido, aun cuando no se especifica un valor
de regreso. (Esto se analizara en la siguiente sección)
•
3 – Parámetros
•
1 – Variable local
•
3 – Áreas de espacio para cálculo.
------------------------------------------------
•
10 – Total
Como se menciono anteriormente un Cog necesita suficiente espacio para toda la memoria que puede
usar junto con el espacio de pila que cualquier método llama. Algunos métodos tendrán llamadas de
métodos anidados donde un método
esos métodos necesitan memoria de pila asignada si el método
Errar en el lado de la precaución: La mejor forma de asignar espacio de pila para el Cog que inicia un
método Spin es tener precaución y declarar mucho más memoria de lo que piensa que necesitara. Así usted
puede usar un objeto en la librería de la herramienta Propeller (la carpeta donde se localiza el archivo
Propeller.exe) que se llama Stack Length.spin para encontrar cuantas variables esta actualmente usando el
método. La práctica de objetos revisara un proyecto que usa el objeto Stack Length para verificar el número
de variables Long requeridas por un método Spin que se inicia en un Cog.
Declarar un arreglo variable long llamado
de asignar extra RAM para el Cog que correrá el interprete Spin. El nombre del arreglo no tiene que
ser
; solo tiene que ser un nombre que el lenguaje Spin pueda usar como nombre de variable.
stack
Los nombres
blinkStack
escoge es aquel cuya dirección se pasa al Cog por el comando
la izquierda del nombre de variable es el que especifica la dirección RAM de la variable global.
Acerca de _STACK: El lenguaje Spin tiene también una constante _stack opcional que puede usarse en un
bloque CON. Es una constante programable de una sola vez para especificar el espacio de pila de la
aplicación. Lea más acerca de esto en la sección de referencia de Lenguaje Spin en el manual del Propeller.
Llamada de Método y el Resultado Variable
Cada método público y privado tiene integrada una local variable predefinida llamada
vez que se llama un método su
Pagina 76 · Kit Educativo de Prácticas Propeller: Fundamentos
Blink repeat reps * 2
empuja dos elementos a la pila: el valor almacenado por
reps * 2
sale de la pila y el resultado del cálculo se almacena en un elemento
2
, el primero con
rate/2
lo más que usa de área de trabajo y cálculos de expresiones intermedias
reps * 2
es 10.
,
, y
pin
freq
reps
time
llama a un método
A
stack
o
también funcionan, siempre y cuando el nombre que se
methodStack
variable se inicializa a cero. Luego, el valor de
result
usa el área de trabajo de dos formas.
y nuevamente cuando el resultado de
hasta que el ciclo
repeat
que a su vez llama un método
B
es el que se inicio en el Cog.
A
en un bloque de código de objeto
. Recuerde que el operador @ a
cognew
reps
. Dentro del ciclo
repeat
se
rate/2
se completa, y dos más
. Todos
C
es una forma
VAR
. Cada
result
puede
result
y