Hello,

Thank you very much for both Matthias and Sergey for your kind responses.

Best Regards,

..:: කසුන් චන්ද්‍රනාත් ::..
..:: Kasun Chandranath ::..

Matthias Hartmann wrote:
> Thanks to Sergey for analysing the LST file.
>
> So, having a MCU with Von Neumann architecture is a good thing here ;-)
> No spezial handling needed to optimize for RAM usage.
>
>
> 2009/3/25 Sergey A. Borshch <sb...@us...>:
>> Kasun Hewage wrote:
>>> It seems, this can not be done or no point of doing it in MSP430 MCUs
>>> because they are Von Neumann architecture MCUs. Would you be able to
>>> tell me that how can I gain an optimized RAM usage when dealing with
>>> constant strings.
>> Take a look at list file for simple example:
>>
>> __attribute__((noreturn))int main()
>> {
>>     WDTCTL = WDTPW;
>>     send_string("Hello I am Kasun", 17);
>>     for(;;);
>> }
>>
>>                .text
>>  143                   .LC0:
>>  144 0000 4865 6C6C            .string "Hello I am Kasun"
>>  144      6F20 4920
>>  144      616D 204B
>>  144      6173 756E
>>  144      00
>>  145                           .section        .text.main,"ax",@progbits
>>  146                           .p2align 1,0
>>  147                   .global main
>>  149                   /***********************
>>  150                    * Function `main'
>>  151                    ***********************/
>>  152                   main:
>>  153                   .LFB4:
>>  154                   .LSM10:
>>  155                           /* prologue: frame size = 0 */
>>  156                   .L__FrameSize_main=0x0
>>  157                   .L__FrameOffset_main=0x4
>>  158 0000 3140 0000            mov     #(__stack-0), r1
>>  159 0004 0441                 mov     r1,r4
>>  160                           /* prologue end (size=3) */
>>  161
>>  162                   .LSM11:
>>  163 0006 B240 005A            mov     #llo(23040), &0x0120
>>  163      2001
>>  164                   .LSM12:
>>  165 000c 3E40 1100            mov     #llo(17), r14
>>  166 0010 3F40 0000            mov     #.LC0, r15             ; <--- here
>>  167 0014 B012 0000            call    #send_string
>>  168                   .LSM13:
>>  169                   .L9:
>>  170 0018 FF3F                 jmp     .L9
>>  171                   .LSM14:
>>  172
>>  173                           /* epilogue: empty, noreturn function*/
>>  174                   .LFE4:
>>  176
>>  177                   /********* End of function ******/
>>
>> As you can see, string located in .text region and send_string gets pointer
>> directly to this location (; <--- here), with no intermediate copy to ram.
>>
>> --
>> Regards,
>>   Sergey A. Borshch            mailto: sb...@so...
>>     SB ELDI ltd. Riga, Latvia
>>

Reply via email to