Added README file
This commit is contained in:
parent
94af9380aa
commit
84f4c7f55c
70
README.md
Normal file
70
README.md
Normal file
@ -0,0 +1,70 @@
|
||||
avr-tex: An AVR Emulator written in pure LaTeX
|
||||
======================================================
|
||||
|
||||
![A Mandelbrot Set. The image took 40 Minute so be calculated](imgs/mandelbrot-20x20.png)[5]
|
||||
|
||||
LaTeX is known as a typesetting system. But the underlying TeX system
|
||||
is a powerful macro processor. In fact, TeX is a Turing-complete
|
||||
programming language. TeX can compute anything, that is
|
||||
computable. Computeability is a concept from theoretical computer
|
||||
science. After visiting a theoretical CS course, you will know that
|
||||
there are things that cannot be solved by a machine. Never. Look out
|
||||
for the halting machine. So, Turing-complete does not say "It's a
|
||||
proper programming language", but more "someone can write a proper
|
||||
interpreter for any programming language in it, theoretically".
|
||||
|
||||
So back to TeX. To be honest, TeX is a horrible language to code
|
||||
in. After writing my master thesis in LaTex, after crafting every
|
||||
graphic within with TiKz[1] and pgfplots[2], and after writing my
|
||||
first LaTeX package[3], I can honestly say: TeX is the Quasimodo of
|
||||
all widely used programming languages. If you can avoid it, avoid it.
|
||||
But if you are forced to use it, you can abstract from TeX, since it
|
||||
is a "proper" programming language.
|
||||
|
||||
Let's say we want to program our document in C on Top of Tex. Then
|
||||
there would be the need to interpret the C semantic. Basically we
|
||||
would have to write a compiler for C in TeX. Not a very promising
|
||||
future, if you start this. But, we can use a normal C compiler to
|
||||
compile the C code to some simple platform. Like AVR[4]. Since I have
|
||||
other things to do than writing an AVR Emulator in TeX, here it is!
|
||||
|
||||
## You are writing an CPU emulator in TeX, the TYPESETTING system? ##
|
||||
|
||||
Yep.
|
||||
|
||||
## What Microcontroller is emulated? ##
|
||||
|
||||
I aimed for an ATmega8. The AVR platform is an 8 Bit Processor with 16
|
||||
Bit memory addresses. The hardware version is shipped with 1 KByte of
|
||||
RAM and 8 Kbyte Flash memory, but of course, the emulated processor
|
||||
can handle more memory.
|
||||
|
||||
## Are you insane? ##
|
||||
|
||||
Not that anybody knows of.
|
||||
|
||||
## Are all OP codes implemented? ##
|
||||
|
||||
Unfortunately not. I'm still missing 5 opcodes (MULS, MULSU, FMUL,
|
||||
FMULS, FMULSU), but until now I did not encounter a C file, the
|
||||
AVR-GCC emits these opcodes. The fractional multiply opcodes are also
|
||||
somewhat arcane.
|
||||
|
||||
## Is it fast? ##
|
||||
|
||||
Ok, you are asking me, whether a CPU simulator written in TeX, that
|
||||
simulates an 8-Bit microcontroller is fast? Propably not. On my
|
||||
notebook I could achieve 2.5 KHz, so this is a factor 10000 slower
|
||||
than the actual hardware with the highest supported clock rate.
|
||||
|
||||
-----
|
||||
|
||||
[1] http://www.ctan.org/pkg/pgf
|
||||
|
||||
[2] http://pgfplots.sourceforge.net/
|
||||
|
||||
[3] http://www.ctan.org/pkg/dataref
|
||||
|
||||
[4] http://en.wikipedia.org/wiki/Atmel_AVR
|
||||
|
||||
[5] A Mandelbrot Set. The image took 40 Minute to be calculated
|
1
avr.tex
1
avr.tex
@ -16,7 +16,6 @@
|
||||
\input{avr.io}
|
||||
\input{avr.testsuite}
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
\makeatletter
|
||||
|
BIN
imgs/mandelbrot-20x20.png
Normal file
BIN
imgs/mandelbrot-20x20.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
7
tests/mandelbrot.20x20.tikz.tex
Normal file
7
tests/mandelbrot.20x20.tikz.tex
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user