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.

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.


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.

Guitar Personality. This is my music site.


Positive Poetic Perusal.

Comments, suggestions, or friendly conversation concerning the above, and other, topics will be most welcome at r DOT miyagi AT linuxprogramming DOT ca. It might be helpful to read How To Ask Questions The Smart Way .