Assembly language/ARM

From Wikiversity
Jump to navigation Jump to search


Dear friends,

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.

Introduction[edit]

... more about ARM assembly language here ...

Interpreter project[edit]

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. [factual?]

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 ...

Contributers[edit]

  • Thomas Lloyd Scott

further reading[edit]