FILE : Makefile
----   --------

CC = arm-elf-gcc
AS = arm-elf-as
LD = arm-elf-ld
od = arm-elf-objdump
RM = rm

TARGET_MACH = -mno-fpu -march=armv4t -mcpu=arm7tdmi -mthumb-interwork
TARGET_ARCH = -march=armv4t -mcpu=arm7tdmi -mthumb-interwork -mthumb
CPPFLAGS =
CFLAGS = -O0
ASFLAGS = 
LDFLAGS = --gc-sections

OBJ = FirstAsm.o SecondC.o
ELF = FinalProgram.elf
LST = FinalProgram.lst
SYM = FinalProgram.sym

.PHONY: all
all: $(OBJ)
	$(od) -S FirstAsm.o > FirstAsm.lst
	$(od) -S SecondC.o > SecondC.lst
	$(LD) $(LDFLAGS) -o $(ELF) $(OBJ)
	$(od) -S $(ELF) > $(LST)
	$(od) --all $(ELF) > $(SYM)

.PHONY: clean
clean:
	$(RM) -f $(ELF) *.lst *.o *.sym

==============================================================================

FILE : FirstAsm.s 
----   ----------

.section "FirstSection", "ax"
.align 0
.arm

FirstSectionCode:

MOV  R0, R1
MOV  R0, R1

EndOfFirstSectionCode:

LDR R2, [ R1 ]

_start:

.text
.align
.arm

BL f

.global _start
.global FirstSectionCode
.global EndOfFirstSectionCode
.global f

==============================================================================

FILE : SecondC.c
----   ---------

int r;

int f( void )
{
  r = 10;
  return r;
}

