View Single Post
Old 28 June 2016, 23:32   #2
Don_Adan
Registered User
 
Join Date: Jan 2008
Location: Warsaw/Poland
Age: 53
Posts: 1,408
Quote:
Originally Posted by meynaf View Post
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.
Don_Adan is offline  
 
Page generated in 0.06315 seconds with 11 queries