Hi to everybody, I'm sending here the main assembler patch for reviews and suggestions. It is bzipped as it is quite a big patch, but I couldn't find a meaningful way to split it. A quick mile-high overview: the assembler is divided in a parser and a bytecode writer. The parser is made by the flex (asmshader.l) and bison (asmshader.y) source files and the asmparser.c file. The bytecode writer is in bytecodewriter.c, btw, and asmutils.c contains some utility functions used in the assembler. With the asmshader.l SlAssembleShader function the parser processes the shader and returns an intermediate representation of it into the wine_shader struct. Then this struct is passed to the bytecode writer with the SlWriteBytecode function, which produces the assembled shader bytecode. A "point of interest": in the bottom part of asmshader.h there are some definitions borrowed from wined3d. They are used only internally, so they should not be a problem, but I'd like to hear if you think differently (ex. it is better to rename them?).
Thank you, Matteo Bruni