Autor Tema: instrucciones que restauren el valor de los registros  (Leído 1443 veces)

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

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
instrucciones que restauren el valor de los registros
« 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






Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: instrucciones que restauren el valor de los registros
« Respuesta #1 en: 29 de Octubre de 2010, 20:50:57 »
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 !

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: instrucciones que restauren el valor de los registros
« Respuesta #2 en: 30 de Octubre de 2010, 01:53:05 »
Siempre puedes hacerte una función de guardado de contexto en ASM incrustado dentro de C.

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: instrucciones que restauren el valor de los registros
« Respuesta #3 en: 30 de Octubre de 2010, 07:36:15 »
Citar
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?

Citar
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.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: instrucciones que restauren el valor de los registros
« Respuesta #4 en: 31 de Octubre de 2010, 12:43:32 »
Hola,

Citar
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 !