PROGRAMANDO EN C: Cálculo teórico de la instrucción división utilizando flotantes

Hola amig@s del foro!

Estaba calculando de manera práctica mediante un programa genérico de simulación, el tiempo que invierte un microcontrolador (8051) en ejecutar la instrucción división utilizando números en coma flotante (float). Todo esto mediante la programación en lenguaje de programación en C.

Y me pregunto si alguien me podía ayudar y darme una pista para el cálculo teórico exacto de dicho tiempo.

La verdad no tengo ni idea de cómo se hace la transformación de un lenguaje de alto nivel a bajo nivel...

Gracias!
 
Última edición:
Hola, algunos programas permiten ver cuantos ciclos se demora en ejecutar el codigo en C, paso por paso. De esa forma puedes saber con exactitud cuanto ciclos, y tiempo, se demora.

Lamentablemente no pudes saber a que equivale el codigo C en assembly (para estimar teóricamente el tiempo), al menos yo se que eso no se puede saber ( solo el compilador lo sabe ).

La ultima opción , es utilizar un timer del mismo micro para cronometrar el tiempo.
salidos
 
Hi navajo,
Cual IDE estas utilizando?
ese tipo de datos normalmente lo puedes determinar con las herramientas de debug,
busca algo como COUNTER TIME o EXECUTION CYCLE.
:)
 
Hola asdf123 & Unikfried!! Gracias por vuestras respuestas.

A asdf123: estoy probando la última opción y me surge la duda <<¿de en qué momentos se arranca el timer??>> Sería asi? No lo tengo muy claro porque pienso que contaría un ciclo de máquinas más del real.
¿Qué opináis?

TR0 = 1;
*cociente = a / 25658.32;
TR0 = 0;

A Unikfried:

Estoy utilizando uVision4 y creo que lo puedo hacer de dos maneras:

1. Contando los ciclos de máquina.
2. Visualizar el tiempo invertido por dicha instrucción. El tiempo de simulación puedo
observarlo en la Barra de Estado. Luego lo resto y los saco. Me parece muy bruto pero en fin...

¿Qué exactitud pensáis qué puede tener?
 
Última edición:
Hi navajo!
el uVision es de keil?

Bueno yo he utilizo el HEW y el IAR dependiendo el micro ese dato lo obtienes directo.
Colocas una badera de inicio y una de fin ademas defines la frecuencia deel Oscilador que
que estas utilizando para que el dato sea mas exacto.

La exactitud real depende de la precision y tolerancia del oscilador que utilizas.

:)
 
Atrás
Arriba