Here are the five C functions we'll use in our initial set of LC3 translation assignments.
void swap(int *a, int *b) { int t ; t = *a ; *a = *b ; *b = t ; }
void Swap2and3(int a[]) { int *α1, *α2 ; α1 = a+2 ; α2 = a+3 ; swap(α1, α2) ; }
int findMostOdd(int a[], int n) { int r = 0 ; int i ; int α1, α2 ; i = 0 ; goto λ3 ; λ0: α1 = a[i] ; α2 = α1 & 1 ; /* that's the AND instruction */ if (α1 == 0) goto λ2 ; if (r == 0) goto λ1 ; if (α1 <= r) goto λ2 ; λ1: r = α1 ; λ2: ++i ; λ3: if (i<n) goto λ0 ; return r ; }
int badFib(int n) { int α0, α1, α2 ; if (n > 1) goto λ1 ; α0 = 1 ; goto λ0 ; λ1: α1 = n-1 ; α1 = badFib(α1) ; α2 = n-2 ; α2 = badFib(α2) ; α0 = α1 + α2 ; λ0: return α0 ; }
static int accumulator = 0 ; int FetchAndAdd(int y) { accumulator = accumulator + y ; return accumulator ; }