TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jgpeiro06 en 29 de Octubre de 2010, 05:44:24
-
Hola
me gustaria saber si conoceis alguna manera de indicarle al compilador que una zona de código debe almacenar todos los registros de la CPU que use y restaurarlos después.
Por ejemplo: La sentencia "int var = 0x1234;" en ASM seria algo como esto,
MOVI 0x12, RX
MOVI 0x34, RY
ST var
y yo busco alguna palabra reservada de C, o algo asi, que genere mas o menos este codigo:
PUSH RX
PUSH RY
MOVI 0x12, RX
MOVI 0x34, RY
ST var
POP RY
POP RX
Saludos
-
Hola, en C propiamente dicho no existe nada. Lo mas parecido a un cambio de contexto es mirar los fuentes de las funciones ANSI setjmp y longjmp que se implementan en assembler y son plataforma dependiente.
Saludos !
-
Siempre puedes hacerte una función de guardado de contexto en ASM incrustado dentro de C.
-
Lo mas parecido a un cambio de contexto es mirar los fuentes de las funciones ANSI setjmp y longjmp
pero esas funciones son solo para hacer un salto de programa (como un goto), no?
Siempre puedes hacerte una función de guardado de contexto en ASM incrustado dentro de C.
Si,es una opción no se me había ocurrido. De todas maneras siempre salvarias todos los registros y no solo los que uses....
La verdad es que creo que es una función que solo es necesaria en casos muy especiales, y que en eses casos puedes salvar todos sin preocuparte por la eficiencia.
-
Hola,
pero esas funciones son solo para hacer un salto de programa (como un goto), no?
No, se salva el contexto al llamar a setjmp y se restaura al llamar al longjmp.
http://en.wikipedia.org/wiki/Setjmp
Saludos !