Quote:
Originally Posted by meynaf
Hi asm guys, 040+ experts are wanted here.
That's just a few corner cases which i don't know for sure how they behave.
Upto 68030 i know, but for 68040/68060 i can't check. IIRC move16 (a0)+,(a0)+ will copy the data onto itself then increment a0 twice and i'm wondering if other stuff wouldn't behave the same...
Code:
move.l (a0)+,(a0)+ ; copies data on next long or onto itself ?
move.l -(a0),-(a0) ; -4(a0) to -8(a0) then a0-=4 ?
move.l 8(a7),-(a7) ; dec a7 done before or after a7+8 eval ?
move.l (a7)+,(a7) ; "+" done before or after dest (a7) eval ?
pea (a7) ; pushes value "as is" or not ?
move.l a7,-(a7) ; always equivalent to the above ? (movem.l isn't !)
pea 4(a7) ; pushes a7+4 or not ?
|
Checked on 68040.
1. long data are copied, A0 is +8.
2. long data are copied, A0 is -8.
3. long data from 8(a7) are copied, A7 is -4.
4. long data from (a7)+ are copied, A7 is + 4.
5. A7 is pushed on stack.
6. same like pea (a7).
7. pushes a7+4.