At 2014-04-19 01:47:16,"Jason Garrett-Glaser" <[email protected]> wrote:
>> In this case, they pass a align stack to our code, but cglobal push 3
>> registers, so broken stack align.
>
>I don't understand what you mean.  x264asm knows what the stack
>alignment is, so when it allocates scratch space, it references
>aligned locations on the stack.  It doesn't matter how many registers
>it pushes; if it pushes 12 bytes of registers, it references locations
>that are 12 bytes off from where it would if there were no registers
>pushed.
>
>"esp" itself may not be aligned, but that's fine, because no data is
>ever accessed directly from esp -- it's accessed from aligned
>locations on the stack.  That's how stack alignment works. esp only
>needs to be aligned if the function calls another function, but
>x264asm is for leaf functions, so that doesn't apply.
>
In the x264asm header, I found the doc "%4 = (optional) stack size to be 
allocated. If not aligned,  the stack will be manually aligned (to 16 or 32 
bytes)"
I guess it means we can alloc some space on stack, and x264asm will let it 
align to 16 ort 32 bytes bound, am I right?
 
In this case, x264asm don't do it because HAVE_ALIGNED_STACK=1
the input stack is aligned, but we need push 3 regs into stack, so we got a 
stack mistake.
 
_______________________________________________
x265-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/x265-devel

Reply via email to