{\r
char text[32]="";\r
int shift=0;\r
- \r
+ \r
shift=32-(8<<size);\r
\r
DisaPc=2; DisaGetEa(text,ea,size); // Get text version of the effective address\r
\r
if (ea<0x10)\r
{\r
- int lsl=0,low=0,i;\r
+ int lsl=0,low=0,nsarm=size&3,i;\r
if (size>=2||(size==0&&(top||!sign_extend))) {\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
\r
+ if (top) nsarm=3;\r
+\r
ot(";@ EaRead : Read register[r%d] into r%d:\n",a,v);\r
\r
- if (lsl>0) ot(" ldr%s r%d,[r7,r%d,lsl #%i]\n",Narm[size&3],v,a,lsl);\r
- else if (lsl<0) ot(" ldr%s r%d,[r7,r%d,lsr #%i]\n",Narm[size&3],v,a,-lsl);\r
- else ot(" ldr%s r%d,[r7,r%d]\n",Sarm[size&3],v,a);\r
+ if (lsl>0) ot(" ldr%s r%d,[r7,r%d,lsl #%i]\n",Narm[nsarm],v,a,lsl);\r
+ else if (lsl<0) ot(" ldr%s r%d,[r7,r%d,lsr #%i]\n",Narm[nsarm],v,a,-lsl);\r
+ else ot(" ldr%s r%d,[r7,r%d]\n",Sarm[nsarm],v,a);\r
\r
- if (top && shift) ot(" mov r%d,r%d,asl #%d\n",v,v,shift);\r
+ if (top&&shift) ot(" mov r%d,r%d,asl #%d\n",v,v,shift);\r
\r
ot("\n"); return 0;\r
}\r