[theora-dev] "Xiph needs someone to help with assembly for MSVC!"

Nils Pipenbrinck n.pipenbrinck at cubic.org
Thu Oct 2 14:21:17 PDT 2008

Fernando Pelliccioni wrote:
> Have you solved the problem?
> Does the offer still stands?

I think I did that job last years december for the decoder.

I first revamped / re-scheduled the existing GCC based functions and 
then did a half-automated translation to MSVC.

The trick was to use the objconv utility. That tool is able to translate 
the GCC compiled object file to Intel-style assembler.  It also was a 
great help because I was able to translate the flexible register style 
of GCC to the explicit register style of the MSVC inline assembler.

Anyway: I'm still a strong believer that it would be a damn good idea to 
get rid of the compiler dependent inline assembler stuff and move the 
asm-code into a *real* assembler-file. For x86 we have a well defined 
ABI that we works surprisingly well acrorss multiple operating systems. 
NASM as an assembler would be my first choice because it works on all 
relevant x86 platforms and is very easy to install (no big surprise as 
it's a single-file executable).

If we can motivate the theora mainainers to go this way I'd vulanteer 
and rewrite the code.

The days of inline assembler are over anyways. For MSVC you can't 
compile inline assembler in 64 bit mode anymore, and other architectures 
beside x86 have their own needs as well. For the C64x+ DSP you write 
something called linear assembler if you want maximal performance. That 
stuff is neither C nor assembler. It's something inbetween.

Besides that: I do have a working port for the C64x+ DSP I just 
mentioned. I also toy around with a port to the ARMv6-architecture 
(ARM11 and ARM Cortex-A8). Some experimental code for the NEON-SIMD unit 
exists as well.

More information about the theora-dev mailing list