There are several Topic:Assembly Language.
In this course we will be learning ARM assembly language. We assume you already have a little experience in some other programming language.
Most 32 bit processors sold in 2005 used the ARM assembly language.
... more about ARM assembly language here ...
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.
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).
- 3) Use these primatives to create "midlevel" subroutines. Your application calls these MidLevels .
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 .
- 1) Users can script , a
- 2) "booter" SU can boot/shut down only .
- 3) owner can do anything with his key .
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 .
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 ...
- Thomas Lloyd Scott