summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/avremu/README
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/avremu/README')
-rw-r--r--Master/texmf-dist/doc/latex/avremu/README75
1 files changed, 75 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/avremu/README b/Master/texmf-dist/doc/latex/avremu/README
new file mode 100644
index 00000000000..7fe8622e2ee
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/avremu/README
@@ -0,0 +1,75 @@
+avremu: An AVR Emulator written in pure LaTeX
+======================================================
+
+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 problem. 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!
+
+The newest source can be found at https://gitlab.brokenpipe.de/stettberger/avremu
+
+The package is licensed under LPPL 1.3
+
+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