/* prototype of generated function is (void *fb, int x, int y, int idx) */
const char *prefixfmt[] = {
/* GNU assembler template */
+ "\t.text\n"
"\t.global %s\n"
+ "\t.global _%s\n"
"%s:\n"
+ "_%s:\n"
"\tmov 12(%%esp), %%eax\n"
"\tmov $%d, %%ecx\n"
"\tmul %%ecx\n"
"tiletab:\n",
/* NASM template */
+ /* TODO hardcoding the 16bpp changes for now, generalize later
+ * and while we're at it, let's get rid of the mul too ...
+ */
+ "\tsection .text\n"
"\tglobal %s\n"
+ "\tglobal _%s\n"
"%s:\n"
+ "_%s:\n"
"\tmov eax, [esp + 12]\n"
- "\tmov ecx, %d\n"
- "\tmul ecx\n"
+ ";\tmov ecx, %d\n"
+ ";\tmul ecx\n"
+ "\tmov ecx, eax\n"
+ "\tshl eax, 9\n"
+ "\tshl ecx, 7\n"
+ "\tadd eax, ecx\n"
+ "\tadd eax, [esp + 8]\n"
"\tadd eax, [esp + 8]\n"
"\tadd eax, [esp + 4]\n"
"\tmov edx, eax\n"
ysz = tile_ysz;
}
- printf(prefixfmt[asyntax], name, name, fbpitch);
+ printf(prefixfmt[asyntax], name, name, name, name, fbpitch);
for(i=0; i<num_ytiles*num_xtiles; i++) {
if(asyntax == AS_GNU) {
printf("\t.long tile%d\n", i);