<div dir="ltr">On Sun, Oct 4, 2020 at 1:49 PM Christo Crause <<a href="mailto:christo.crause@gmail.com">christo.crause@gmail.com</a>> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">FPC can use the section modifier to specify which address space should be used for data.<br></div></blockquote><div><br></div><div>I've made some progress in certain areas (basically static variables), the following type of AVR code example works:</div><div>var</div><div>  w: word = $BEEF; section '.eeprom';</div><div>  b: byte;<br></div><div>begin</div><div>  b := hi(w);<br></div><div>end.<br></div><div><br></div><div>However I see problems with propagating section information through reference type parameters. I'm not sure how to propagate the section information of the variable "w" through the parameter into the procedure of the following example:<br></div><div><div>var</div><div>  w: word = $BEEF; section '.eeprom';</div><div>  b: byte;<br></div><div><div><br></div><div>procedure doSomething(constref tmp: word);</div><div>begin</div><div>  b := hi(tmp);<br></div><div>end;</div></div><div><br></div><div>begin</div><div>  doSomething(w);<br></div><div>end.</div><div><br></div><div>At the moment  there doesn't appear to be a way to do this without changing or adding something to the compiler.  One idea could be to define new types identifying types in a specific address space, such as Teepromword. In this case the above example could be written as:</div><div></div><div><div>var</div><div>  w: Teepromword = $BEEF;</div><div>  b: byte;<br></div><div><div><br></div><div>procedure doSomething(constref tmp: word); overload;<br></div><div>begin</div><div>  b := hi(tmp);<br></div><div>end;</div></div><div><div><div><br></div><div>procedure doSomething(constref tmp: Teepromword); overload;<br></div><div>begin</div><div>  b := hi(tmp);<br></div><div>end;</div></div></div><div><br></div><div>begin</div><div>  doSomething(w);<br></div><div>end.</div><div><br></div>This way the compiler knows how to generate appropriate access based on the parameter type. It however leads to lots of code duplication.  Which got me thinking about generics - could this be handled internally in the compiler via generics?  It isn't clear to me how to tackle these issues so any advice would be appreciated.<br></div><div><br></div><div>Best regards,</div><div>Christo<br></div></div></div></div>