From: Keith W. <ke...@tu...> - 2002-05-28 16:46:42
|
Michael, Did you ever come up with a better way of organizing the codegen templates in radeon_vtxfmt_x86.c ? I've just been trying linking in a .o file build from assembly that looks like this: -------------- .text .align 4 .globl _x86_3fv_3f _x86_3fv_3f: push %ebx movl 4(%esp), %eax /* load 'v' off stack */ movl $0x12345678, %eax /* load buffer pointer */ movl (%eax), %ecx /* load v[0] */ movl 4(%eax), %edx /* load v[1] */ movl 8(%eax), %ebx /* load v[2] */ movl %ecx, (%eax) /* store v[0] to current vertex */ movl %edx, 4(%eax) /* store v[1] to current vertex */ movl %ebx, 8(%eax) /* store v[2] to current vertex */ pop %ebx ret .globl _x86_3fv_3f_end _x86_3fv_3f_end: ------------------ With the idea that I'd memcpy the region between _x86_3fv_3f and _x86_3fv_3f_end to a malloced area and then do fixup there. However I'm getting odd & hard-to-explain results... Keith |
From: Michael <le...@nt...> - 2002-05-28 18:10:01
|
On Tue, May 28, 2002 at 05:46:36PM +0100, Keith Whitwell wrote: > Michael, > > Did you ever come up with a better way of organizing the codegen templates > in radeon_vtxfmt_x86.c ? I didn't get as far as writing anything unfortunately. My idea was pretty much what you've got below, a .s file that you copy and fixup, so that you can change the assembler easier. We did talk a bit about the fixup, it'd be nice to have the .s file generate the labels without needing to calc offsets, with something like a MOVL(LabelName, reg) macro? I don't know what the assembler gives you to do that. > However I'm getting odd & hard-to-explain results... In that example it looks like you're using %eax for src and dst? I have some code that does this and it has .section blah, "x" .data not .text I don't know how significant that is, if at all. -- Michael. |