[fpc-devel] Issue with Compiler output for shr on Cortex-M4

Michael Ring mail at michael-ring.org
Sun Feb 3 17:31:32 CET 2019


Forgot to mention I am using Trunk compiler from today revision 41187 
ond optimization level was -O1

Michael

Am 03.02.19 um 17:20 schrieb Michael Ring:
> I think I found another issue with Code generation, this time on 
> Cortex-M4:
>
> I need to write Byte Aligned to the Data Register of the SPI Interface 
> of a STM32 Chip....
>
> so what I (try) to do is:
>
> using pByte(@DR)^ to force a single byte transfer and I succeed with 
> the byte alignment.......
>
> BUT
>
> please check the generated assembler, the requirred LSRS (SHR) is not 
> done by the compiler.
>
> Just for fun I removed the byte alignment and the LSRS shows up...
>
> @Jeppe, can this have to do with the fix for Cortex-M0 you provided to 
> me a few days ago or is this just another issue?
>
>     pByte(@DR)^ := aWord shr 8;
>      0800 185A  LDR          R0, [R11, #-0x38]
>      0800 185E  ADD.W        R1, R0, #0xC
>      0800 1862  LDRH         R0, [R11, #-0x30]
>      0800 1866  STRB         R0, [R1]
>
>     DR := aWord shr 8;
>      0800 1868  LDRH         R0, [R11, #-0x30]
>      0800 186C  LSRS         R1, R0, #8
>      0800 186E  LDR          R0, [R11, #-0x38]
>      0800 1872  STR          R1, [R0, #0xC]
>
> Thank you,
>
>
> Michael
>
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel



More information about the fpc-devel mailing list