// add nonstandard EA\r
int Ea_add_ns(int *tab, int ea)\r
{\r
- if(ea<0x10) return 0;\r
- if((ea&0x38)==0x10) return tab[0]; // (An) (ai)\r
- if(ea<0x28) return 0;\r
- if(ea<0x30) return tab[1]; // ($nn,An) (di)\r
- if(ea<0x38) return tab[2]; // ($nn,An,Rn) (ix)\r
- if(ea==0x38) return tab[3]; // (aw)\r
- if(ea==0x39) return tab[4]; // (al)\r
- if(ea==0x3a) return tab[5]; // ($nn,PC) (pcdi)\r
- if(ea==0x3b) return tab[6]; // ($nn,pc,Rn) (pcix)\r
- if(ea==0x3c) return tab[7]; // #$nnnn (i)\r
- return 0;\r
+ if(ea<0x10) return 0;\r
+ if((ea&0x38)==0x10) return tab[0]; // (An) (ai)\r
+ if(ea<0x28) return 0;\r
+ if(ea<0x30) return tab[1]; // ($nn,An) (di)\r
+ if(ea<0x38) return tab[2]; // ($nn,An,Rn) (ix)\r
+ if(ea==0x38) return tab[3]; // (aw)\r
+ if(ea==0x39) return tab[4]; // (al)\r
+ if(ea==0x3a) return tab[5]; // ($nn,PC) (pcdi)\r
+ if(ea==0x3b) return tab[6]; // ($nn,pc,Rn) (pcix)\r
+ if(ea==0x3c) return tab[7]; // #$nnnn (i)\r
+ return 0;\r
}\r
\r
\r
if (ea<0x28)\r
{\r
int step=1<<size, strr=a;\r
- int low=0,lsl,i;\r
+ int low=0,lsl,i;\r
\r
if ((ea&7)==7 && step<2) step=2; // move.b (a7)+ or -(a7) steps by 2 not 1\r
\r
EaCalcReg(2,ea,mask,0,0,1);\r
- if(mask)\r
+ if(mask)\r
for (i=mask|0x8000; (i&1)==0; i>>=1) low++; // Find out how high up the EA mask is\r
- lsl=2-low; // Having a lsl #x here saves one opcode\r
+ lsl=2-low; // Having a lsl #x here saves one opcode\r
if (lsl>=0) ot(" ldr r%d,[r7,r2,lsl #%i]\n",a,lsl);\r
else if (lsl<0) ot(" ldr r%d,[r7,r2,lsr #%i]\n",a,-lsl);\r
\r
if ((ea&0x38)==0x18) // (An)+\r
- {\r
+ {\r
ot(" add r3,r%d,#%d ;@ Post-increment An\n",a,step);\r
- strr=3;\r
- }\r
+ strr=3;\r
+ }\r
\r
if ((ea&0x38)==0x20) // -(An)\r
ot(" sub r%d,r%d,#%d ;@ Pre-decrement An\n",a,a,step);\r
\r
if ((ea&0x38)==0x18||(ea&0x38)==0x20)\r
- {\r
+ {\r
if (lsl>=0) ot(" str r%d,[r7,r2,lsl #%i]\n",strr,lsl);\r
else if (lsl<0) ot(" str r%d,[r7,r2,lsr #%i]\n",strr,-lsl);\r
}\r
{\r
int lsl=0,low=0,i;\r
if (size>=2||(size==0&&top)) {\r
- if(mask)\r
+ if(mask)\r
for (i=mask|0x8000; (i&1)==0; i>>=1) low++; // Find out how high up the EA mask is\r
- lsl=2-low; // Having a lsl #2 here saves one opcode\r
- }\r
+ lsl=2-low; // Having a lsl #2 here saves one opcode\r
+ }\r
\r
ot(";@ EaRead : Read register[r%d] into r%d:\n",a,v);\r
\r
{\r
int lsl=0,low=0,i;\r
if (size>=2||(size==0&&top)) {\r
- if(mask)\r
+ if(mask)\r
for (i=mask|0x8000; (i&1)==0; i>>=1) low++; // Find out how high up the EA mask is\r
- lsl=2-low; // Having a lsl #x here saves one opcode\r
- }\r
+ lsl=2-low; // Having a lsl #x here saves one opcode\r
+ }\r
\r
ot(";@ EaWrite: r%d into register[r%d]:\n",v,a);\r
if (shift) ot(" mov r%d,r%d,asr #%d\n",v,v,shift);\r