Merge branch 'master' of git.ucc.asn.au:/ipdf/code
[ipdf/code.git] / src / vfpu.h
index da130a4..12ac9bc 100644 (file)
@@ -5,9 +5,11 @@
  * Implements a terrible and hacky interface to use a virtual FPU to do floating point operations
  */
 
+#include <bitset>
+
 namespace VFPU
 {
-       extern int Start(); // Starts the VFPU
+       extern int Start(const char * vcd_output = NULL); // Starts the VFPU
        extern int Halt(); // Halts the VFPU
 
 /**
@@ -21,10 +23,11 @@ namespace VFPU
                -- 111 = unused
  */
        typedef enum {ADD=0x000, SUB=0x001, MULT=0x010, DIV=0x011, SQRT=0x100} Opcode;
-       typedef float Register;
+       typedef enum {EVEN=0x00, ZERO=0x01, UP=0x10, DOWN=0x11} Rmode;
+       typedef std::bitset<32> Register;
        
-       extern Register Exec(const Register & a, const Register & b, Opcode op);
-
+       extern Register Exec(const Register & a, const Register & b, Opcode op, Rmode rmode = EVEN); // operate with registers
+       extern float Exec(float a, float b, Opcode op, Rmode rmode = EVEN); //converts floats into registers and back
 }
 
 #endif //_VFPU_H

UCC git Repository :: git.ucc.asn.au