Even better /*AND ~$CFLAG,%cl*/
instead of /*AND $ZFLAG+NFLAG,%cl*/ ________________________________ From: Timmermans, Andre Sent: jeudi 16 février 2012 21:06 To: [email protected] Subject: Code review Hi, I have been looking at te sources of version 0.8.9 to see why some of my code doesn't work properly with the dynamic recompiler. I have first compared arm.c and the ArmDynarecOps.c/h files. Here I have found only one difference: In function SWPWord() of ArmDynarecOps.h line 343 is "addr=armregs[RN]&~3;" while the corresponding line 925 in arm.c is "addr=armregs[RN];". I think the dynamic version is the correct one. I have also looked at the file codegen_x86.c. The function generateshiftflags() seems to be mishandling the C flag (at least if the comments match te actual opcodes used). According to te Acorn Assembler book and what I see in arm.c the flag C is left untouched if no shift occurs and flags NZV are always left untouched. This means that code should look like : /*MOVB *pcpsr,%cl*/ if (no shift) do nothing else /*AND $ZFLAG+NFLAG,%cl*/ do shift /*JNC nocarry*/ /*OR $CFLAG,%cl*/ In the code it seems that flag C is always set to 0 if no shift occurs and when a shift occurs it is sometimes set to 1 but never reset to 0. Cheers, André Timmermans André +32 02-5362244 [email protected]<mailto:[email protected]> Chaussé de Liège 221 5100 Jambes Belgium [cid:093173622@16022012-21C6] Siemens IT Solutions and Services n.v./SA RPR/RPM Brussels : 0459 540 270 Banks: BNP Paribas Fortis 210-0046976-80; KBC 482-9058191-06 As of July 1st 2011, Siemens IT Solutions and Services is an Atos business
<<inline: att8fbca.gif>>
_______________________________________________ Rpcemu mailing list [email protected] http://www.riscos.info/cgi-bin/mailman/listinfo/rpcemu
