Draft:Archive/2024/Assembly language/ARM

Dear friends,

There are several [*Topic:Assembly language|Topic:Assembly Language]].

In this course we will be learning ARM assembly language. We assume you already have a little experience in some other [*Portal:Computer programming| programming language]].

Most 32 bit processors sold in 2005 used the ARM assembly language.

Introduction
'' ... more about ARM assembly language here ... ''

Interpreter project
As an example of a relatively large assembly language program, we will implement a Forth interpreter.


 * HLL = High Level Language
 * Code = Low level instructions
 * Pseudo Code = Intuitive text

ARM 920T has a 32 bit instruction set, but also has a 16 bit "Thumb" set. Thumb has lacks like the leading 4 bits of conditional codes. However "Extended" Thumb is so "complete" it will do easier and faster code than 32 bit ARM.
 * fact}}

MacroAssemblers are belabored, need manuals. "Forth" HLL is intuitive, max leverage , only takes a few minutes to learn from an asssembly listing. I'll create a Forth G.U.I in time. Forth Primative command [ SEE MyProg ] disassembles the [ MyProg ].... if G.U.I., you will see a Movie ...icons move about the LCD to show the action.


 * 1) Port Forth to new H/W by creating a partial assembler that uses only the clever instructions.


 * 2) Next create code frags ( aka "Primatives ") that allow assembly without using Forth assembler ( built in).

Everything is in a dictionary that is searched to link the code. Apps link Midlevel, who link primatives , who link assmbly code. No forward references. No [Vocabs], No STATE , No STACK. Prim's use a STACK, you cant. Forth has no STACK, uses modern data structures even at low level. Use one level hashing in the Dict' and MRU to build a faster search method. Users dont see a File/folder system, Forth manages all objects. No ObjectOrientedProgramming. All Objects have a header that allows fast search. Thus objects can be linked to the max. Multi-task : 1 ) prior' 1 device tells kernel what size time slice to give to Prior' 2 . Kernel calcs who gets time from this . 2) Hardware IRQ's are allways disabled.
 * 3) Use these primatives to create "midlevel" subroutines. Your application calls these MidLevels.
 * 1) Users can script, a
 * 2) "booter" SU can boot/shut down only.
 * 3) owner can do anything with his key.

All code is reentrant, but why would you make such a mistake ! Learn better programming !

Code can easily be unrolled ( nix CALL/RETURN) for speed.

... unfinished ...

Contributers

 * Thomas Lloyd Scott