Here are two more. First, VAX-11C:
double a1[100],a2[100],a3[100];
swert() {
swert:
.entry swert,^m<r2>
subl2 #4,sp
register int i;
for (i=0; i<100; i++) a1[i] = a2[i] + a3[i];
clrl ap
movaq A1,r2
movaq A2,r1
movaq A3,r0
sym.1:
addd3 (r1)+,(r0)+,(r2)+
aobleq #99,ap,sym.1
return;
ret
And, Ultrix C:
_swert: .word L15
clrl r11
L01: addd3 _a3[r11],_a2[r11],_a1[r11]
aoblss $100,r11,L01
ret
The source for both is the same. It helps the Ultrix C compiler to make i a
register variable, but not VAX C. VAX C always tries to make things register
when it can, anyway.