summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Sam Moore [Wed, 9 Apr 2014 17:45:06 +0000 (01:45 +0800)]
VFPU now using std::bitset instead of just float typedef
It's still 32 bits. However it might not break if I change it?
Can't test it at the moment because the virtual FPU is 32 bits still.
Sam Moore [Wed, 9 Apr 2014 15:41:58 +0000 (23:41 +0800)]
An interface for a FPU compiled from VHDL
I have tested with the FPU from https://github.com/jop-devel/jop
The way this works is really awful...
1. Make (or steal from jop) a VHDL FPU
2. Make (or steal from jop) a testbench that uses stdio to read operands and ops
- The jop one reads from a generated file, but it is trivial to change to "STD_INPUT" and remove all the assertion tests.
3. Compile testbench into an executable with ghdl
4. Call VFPU::Start which does the following:
- Create a socketpair(2)
- fork(2) and in the child dup(2) stdin/stdout to the socketpair
- Redirect stderr to /dev/null because the testbench generates 10^3 warning messages
- in the child, exec(3) the testbench FPU
5. Call VFPU::Exec passing the desired operands and opcodes
- The operands and opcodes are written as hex strings over the socketpair
- The child executing the FPU program does its thing
- The result is read back as a hex string
6. When finished, call VFPU::Halt to kill(2) the FPU
I tried to get ghdl and gcc/g++ to make a static library to call ghdl_main instead
of exec'ing things. But that didn't work. The fork and socketpair would have still been
required for that approach anyway.
TODO:
- Make the interface (not the FPU) deal with arbitrary size registers
- Wrap a Real type around it so we can #define REAL_SIMULATED_FPU
I haven't put any of the VHDL in the git repo for obvious reasons.
If I actually start messing with it, it will probably get a seperate repo.
This may end up being a complete waste of time?
Although potentially being able to run an arbitrary FPU albeit in a horrible manner does seem cool.
David Gow [Wed, 9 Apr 2014 08:22:34 +0000 (16:22 +0800)]
Fix RealToFloat test (hopefully)
Sam Moore [Wed, 9 Apr 2014 08:10:27 +0000 (16:10 +0800)]
Use x86_64 when uname is broken
Wierd...
>> sam@daedalus:~$ uname -i
>> unknown
>> sam@daedalus:~$ uname -a
>> Linux daedalus 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux
David Gow [Wed, 9 Apr 2014 08:01:54 +0000 (16:01 +0800)]
Zoom in and out with the mouse wheel.
Note that zoom-out is totally broken with half-precision,
so single-precision is the default. You can still see some artefacts
in single precision mode if you zoom in enough.
Zoom into the corner of a rectangle and then click on the corner an try to drag it.
Eventually you'll notice the reduced precision, and the rectangle will jump around.
David Gow [Wed, 9 Apr 2014 06:40:43 +0000 (14:40 +0800)]
You can move around a document with Click+Drag!
Uses some scary C++11 features, so no idea if this will break the CS Lab machines
and their ancient version of gcc.
David Gow [Mon, 7 Apr 2014 04:28:51 +0000 (12:28 +0800)]
It works on the lab machines now, I swear.
David Gow [Mon, 7 Apr 2014 04:18:23 +0000 (12:18 +0800)]
Magic SDL2 sauce! Now with 32-bit!
(My deepest and most sincere apologies to anyone who tries to read the Makefile now)
David Gow [Mon, 7 Apr 2014 03:58:59 +0000 (11:58 +0800)]
David's secret SDL2 magic sauce!
Sam Moore [Thu, 3 Apr 2014 09:19:35 +0000 (17:19 +0800)]
Add tester for numerical calculation of PI
Calculate PI using float, double and Real and compare the error and performance.
Traditional floats have a point (hardware dependent) where the error starts to behave unpredictably
rather than decreasing with number of intervals - due to rounding/precision errors.
Can see that doubles are better than single precision floats but they still do it.
An infinite precision Real would not have these problems (hah!)
We can at least aim to do better than double.
Based on PHYS CQM/pprog courses from 2012.
Should probably find a literature reference for this.
David Gow [Mon, 31 Mar 2014 12:48:09 +0000 (20:48 +0800)]
Save/Load chunks.
Sam Moore [Wed, 26 Mar 2014 17:42:04 +0000 (01:42 +0800)]
Tester to compare custom Real to IEEE float
Also got the endianness right this time. I think.
Sam Moore [Wed, 26 Mar 2014 17:20:20 +0000 (01:20 +0800)]
Make real.h so we can change reals
Needed to fix view.cpp to call Float where it expects GLfloat
Had an attempt at making a half precision float, but it didn't go very well.
I don't think half precision floats are *that* terrible...
Probably got the bit masking wrong.
Sam Moore [Wed, 26 Mar 2014 16:27:44 +0000 (00:27 +0800)]
Merge branch 'master' of git.ucc.asn.au:/ipdf/code
Conflicts:
src/main.cpp
Fixed that and also fixed other things.
Sam Moore [Wed, 26 Mar 2014 16:17:12 +0000 (00:17 +0800)]
Tweak Makefile to make testing nicer
Who said you needed fancy high level languages to do unit testing?
It can't just be done using Make though; a bash script was also needed.
David Gow [Wed, 26 Mar 2014 16:15:01 +0000 (00:15 +0800)]
Crazy std::vector<T> loader and saver.
David Gow [Wed, 26 Mar 2014 15:57:37 +0000 (23:57 +0800)]
CMake support. We don't have to use it, but it's there if we do.
David Gow [Wed, 26 Mar 2014 10:54:18 +0000 (18:54 +0800)]
It now is all the working.
David Gow [Wed, 26 Mar 2014 10:50:28 +0000 (18:50 +0800)]
Merge branch 'master' of git.ucc.asn.au:ipdf/code
Sam Moore [Wed, 26 Mar 2014 10:50:14 +0000 (18:50 +0800)]
Add ObjectType for Object Type
David Gow [Wed, 26 Mar 2014 10:49:25 +0000 (18:49 +0800)]
Initial outline rendering.
Sam Moore [Wed, 26 Mar 2014 10:23:11 +0000 (18:23 +0800)]
Implement document saving and loading
Also implemented a tester to test it doesn't explode.
We should set this up to make replacing main() easy.
David Gow [Wed, 26 Mar 2014 10:17:00 +0000 (18:17 +0800)]
All of the SDL2 graphics stuff.
(With deprecated, obsolete OpenGL functions! Woo!)
David Gow [Wed, 26 Mar 2014 09:19:13 +0000 (17:19 +0800)]
Fix makefile.
Sam Moore [Wed, 26 Mar 2014 09:17:14 +0000 (17:17 +0800)]
Added Document and View classes
And member functions for doing stuff.
Document Format completed (not really).
Sam Moore [Wed, 26 Mar 2014 08:33:02 +0000 (16:33 +0800)]
ipdf.h and Real type
Real == float for now. Can make a class and overload it later.
Naming convention:
void ThisIsAFunction(Type this_is_a_var);
David Gow [Wed, 26 Mar 2014 08:29:53 +0000 (16:29 +0800)]
Some makefile changes
Sam Moore [Wed, 26 Mar 2014 08:20:30 +0000 (16:20 +0800)]
Add basic code
Log functions & Makefil
David Gow [Wed, 26 Mar 2014 07:36:34 +0000 (15:36 +0800)]
The code repository exists....?
UCC git Repository :: git.ucc.asn.au