Programming

Basic Theory

Von Neumann Architecture. It is very important that aspiring computer programmers learn about the Von Neumann Architecture, which is a generalization of almost any real computer in extant today.

Low Level Programming

For the content below, it would be most helpful if the reader has a working knowledge of the x86-64 architecture, for example, by studying the Intel and/or A.M.D. microprocessor architecture manuals. It would also be beneficial if the reader has a very good knowledge of the G.N.U. tool chain, which may be gained, if necessary, by reading G.N.U. info documentation relating to the programs `cpp', `gcc', `gas', `ld', `make', and the like (this documentation may need to be installed on your computer, as documentation is often packaged separately). If the reader wishes to learn about the C programming language (which is also very necessary for the understanding of the subsequent material in this subsection), it is recommended that the reader read Kernighan and Ritchie's book .

Boot Sector. This boot sector is mostly written in C. This code is not recommended for a production boot sector, as it makes too many assumptions about how the compiler optimizer will work in the future (i.e., it is not certain that the G.N.U. C compiler will, in future releases, optimize the size within 512 bytes, however unlikely it may be that it will become less effective). The author wrote it just to show that it is possible to write a boot sector in C.

System V A.B.I. Tutorial. This tutorial illustrates the System V A.B.I. for x86-64 Linux. For more information about this A.B.I., please refer to the official A.M.D. documentation .

i386 Linux Assembly Tutorial . This is an old tutorial covering assembly programming for i386 Linux. The A.B.I., and other details, have changed for the x86-64 architecture. However, the x86-64 C.P.U. starts out in 16 bit mode, is switched to 32 bit mode, and then subsequently switched to 64 bit mode, therefore, this tutorial retains some usefulness for x86-64 low level programming.

G.C.C. inline assembly. This is another old tutorial that covers inline assembly for the G.N.U. C compiler. Although this tutorial is for i386, the concepts gained from this material may be applied to the x86-64 architecture.

Application Programming

There is a wealth of information, located elsewhere, directly related to user space application programming. If the reader would like to know more about the standard library, the user should read the G.N.U. C library info documentation.

libdstralg. This is a data structure and algorithms library distributed under the terms of version 3.0 of the G.N.U. general public license, which is _strictly_ enforced by the Free Software Foundation.

Web Based Applications

Navigation. Given the latitude and longitude of two points on Earth, this program will calculate the distance and bearing from one of these points to the other.

Cloud Applications. An alphabetical table of cloud applications.

Music

Instrument Tuner. This is a program that generates a tone specified by a chromatic number, relative to 440 Hz, on the command line. The source code (this is a very small program) should document how this program is used. This program was written mainly to demonstrate how to use `libalsa'. However, it is also a useful program for musicians who wish to tune their instruments by ear relative to a known generated tone.

Music Theory. This is my treatise on music theory.



For comments, suggestions, or friendly conversation concerning the above, please send me an email.