ARM 7 Assembly memory areas are not initialized -


i trying write simple program using arm 7 assembly, cannot initialize memory region simple data. here example

    area    reset, code, readwrite     entry     ldr   r0, =sortarray ;load start address     ldr   r1, =sortarrayend ; load end address     str  r15, [r0]     ldr r4, [r0]     sub r2, r2, #1 ; r2 contains (length-1)     mov r6, #0 ; r6 sum set 0 stop b stop     ltorg     area my_data, data, readwrite      align sortarray     dcd 1,5,20,32,13,66,3,5,23,64,112,66,22  sortarrayend      end 

this doesn't loads data in memory, in debug mode sortarray in r0 register points 0x40000000 , sortarrayend points 0x40000034, there no data

memory map data in separate area

but may have noticed there instruction storing data in memory str r15, [r0] , works data stored there.

next example works can see placed data inside code area , made readwrite bad idea. in case can see data in memory.

    area    reset, code, readwrite sortarray     dcd 1,5,20,32,13,66,3,5,23,64,112,66,22  sortarrayend     entry     ldr   r0, =sortarray ;load start address     ldr   r1, =sortarrayend ; load end address     str  r15, [r0]     ldr r4, [r0]     sub r2, r2, #1 ; r2 contains (length-1)     mov r6, #0 ; r6 sum set 0 stop b stop     ltorg      end 

here memory map starts 0x00000000

memory map data placed in code area

please find problem, have spent several days trying figure out wrong.

i using uvision 4 , device lcp2148.

unfortunately, inquiry not clear appears asking multiple questions; namely, "... memory areas not initialized" , "... sortarrayend points 0x40000034, there no data".

sortarrayend should not contain data since not storing it. if trying store value r15 sortarrayend need point register pointing memory address sortarrayend. hope helps. i'm using gnu.

.data         sortarray:      .word 1,5,20,32,13,66,3,5,23,64,112,66,22         sortarrayend:   .word 0  .text         .global main  main:         nop         ldr r0,=sortarray         ldr r1,=sortarrayend         str r15, [r1]  // random value 

illustrated gdb:

(gdb) x/16d $r0 0x11036:        1       5       20      32 0x11046:        13      66      3       5 0x11056:        23      64      112     66 0x11066:        22      33800   0       0 (gdb) x/16d $r1 0x1106a:        33800   0       0       0 0x1107a:        0       0       0       0 0x1108a:        0       0       0       0 0x1109a:        0       0       0       0 

Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -