*I* have personally written code for CBE
Here's some code which, while not actually assembly, shows that you have to use assembly-like macros to get good use of the hardware (apologies for the length; I took as small a section as I could):
/* non-aligned read initialisation */
void
spu_narinit(char **mem, /* start location */
vec_uchar16 *selq, /* mask for selecting qw */
vec_uchar16 *selr, /* mask for selecting remainder */
int rem, /* "remaining" bytes */
vec_uchar16 *buf
)
{
unsigned int mask;
vec_uchar16 vmask;
/* check that mem pointer is aligned to 16 byte address */
if (((unsigned int)(*mem)) & 15) {
printf("Input memory address not aligned to 16 bytes\n");
exit (1);
}
/* load a full vector from memory */
*buf=*((vec_uchar16 *) (*mem));
(*mem)+=16;
/* since all bytes are aligned to begin with, the mask for selb
simply selects all bytes from the buffer */
*selq = (vec_uchar16) { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
/* calculate the equivalent shuffle index register for reading only
rem bytes */
*selr=*selq; /* same order as selq */
/* selr needs to be masked so that the first rem bytes have a high
bit of zero, and all other high bits of 1 */
mask=(1 << (15 - rem)) -1; /* eg, 3 -> 0001111111111111 */
vmask=spu_maskb(mask); /* fsmb: bits of mask -> bytes */
vmask=spu_and(vmask, 128); /* only interested in high bit */
*selr=spu_or(*selr,vmask); /* mask shuffle index register */
}
So, for all you people who shout that all the people who complain about Sony removing the OtherOS function don't even use the thing or should just get a PC and shut up about it: some of us /have/ learned to code on the thing and /have/ written non-trivial applications using it. And we are very legitimately pissed off that the amount of time and effort spent on both of those things has been wasted by Sony's handling of the whole OtherOS fiasco.
The Big Yin put it best above. We bought a machine that was supposed to do A, B, C and D and then they say that we can no longer do both C and D and we must choose one or the other. I actually bought two machines, one for family gaming and the other for my programming use. I have no choice but to keep linux on both of them and not upgrade to restore PSN functionality because if one of the machines fail I will no longer have the programming platform which I originally bought the machines for. The knock-on effect is that some games won't work to their full effect due to needing a PSN logon, and I also miss out on some updates that would fix graphical/sound/other bugs in the game system.
So you can basically fuck right off with your sycophantic Sony fanboi line. I *do* use the CBE, the applications I write are *not* portable to other systems, and I *do* feel betrayed and shafted by Sony for fucking up the system for me both as a programming platform and a gaming system.