i86/{armc1}

back   

Branch from {armc0}, directed at Raspberry Pi

A scratch C compiler with inline assembler, producing fixed-address and relocatable ARM Thumb executable images for the Raspberry Pi.
Executables are suitable for loading by firmware files bootcode.bin and start.elf and using a simple config.txt file containing the lines:

      kernel chaos.bin  
kernel_address 0x8000

{armc1} is chaotic, a means to an end rather than an end in itself. Here are the current source files (I will post the #include files later):

i86 Source files uploaded 20/3/1016 are:
main   armasm   armhelp  prep
gen   seq   decl  init
lit   rl   enum   struct
union   flow   func   call
ut   opr   sy   getop
nc   pc   fetch   i86   exp

20.3.16 Modified IMMMAX in nc and opr.doarrayindex() to avoid generating 4-byte Thumb-2 ADDREGIMM opcodes - these work on the Pi2 and Pi3 (BCM2836,BCM2837), but not on the Pi1 or Pi0 (BCM2835).

14.3.16 Added code to init for null pointer assignment. Modified IMMMAX in nc and opr.doarrayindex() to avoid generating 4-byte Thumb-2 ADDREGIMM opcodes - these work on the Pi2,Pi3 but not on the Pi1,Pi0.