Информация об изменениях

Сообщение Re[12]: Самый низкоуровневый язык, ага от 07.10.2023 14:23

Изменено 07.10.2023 14:27 vsb

Re[12]: Самый низкоуровневый язык, ага
Здравствуйте, Евгений Музыченко, Вы писали:

vsb>>в объектном файле откуда-то затесались пустые функции _init и _fini


ЕМ>В объектном коде есть их вызовы? Они попадают в конечный бинарник? Если да, кто их там вызывает?


Нет, вызовов нет. В конечный бинарник попадают, вызовов там нет.
Re[12]: Самый низкоуровневый язык, ага
Здравствуйте, Евгений Музыченко, Вы писали:

vsb>>в объектном файле откуда-то затесались пустые функции _init и _fini


ЕМ>В объектном коде есть их вызовы? Они попадают в конечный бинарник? Если да, кто их там вызывает?


Нет, вызовов нет. В конечный бинарник попадают, вызовов там нет. Программа почти минимальная (без оптимизации).

arm-none-eabi-objdump -d build/gd32e103_ads1298r.elf

build/gd32e103_ads1298r.elf:     file format elf32-littlearm


Disassembly of section .text:

08000150 <halt>:
 8000150:    e52db004     push    {fp}        @ (str fp, [sp, #-4]!)
 8000154:    e28db000     add    fp, sp, #0
 8000158:    e24dd00c     sub    sp, sp, #12
 800015c:    e1a03000     mov    r3, r0
 8000160:    e54b3005     strb    r3, [fp, #-5]
 8000164:    e59f3014     ldr    r3, [pc, #20]    @ 8000180 <halt+0x30>
 8000168:    e5d33000     ldrb    r3, [r3]
 800016c:    e59f200c     ldr    r2, [pc, #12]    @ 8000180 <halt+0x30>
 8000170:    e55b3005     ldrb    r3, [fp, #-5]
 8000174:    e5c23000     strb    r3, [r2]
 8000178:    e1a00000     nop            @ (mov r0, r0)
 800017c:    eafffffd     b    8000178 <halt+0x28>
 8000180:    20000000     .word    0x20000000

08000184 <start>:
 8000184:    e52db004     push    {fp}        @ (str fp, [sp, #-4]!)
 8000188:    e28db000     add    fp, sp, #0
 800018c:    e1a00000     nop            @ (mov r0, r0)
 8000190:    e28bd000     add    sp, fp, #0
 8000194:    e49db004     pop    {fp}        @ (ldr fp, [sp], #4)
 8000198:    e12fff1e     bx    lr

0800019c <foo>:
 800019c:    e52db004     push    {fp}        @ (str fp, [sp, #-4]!)
 80001a0:    e28db000     add    fp, sp, #0
 80001a4:    e59f3014     ldr    r3, [pc, #20]    @ 80001c0 <foo+0x24>
 80001a8:    e3a02001     mov    r2, #1
 80001ac:    e5832000     str    r2, [r3]
 80001b0:    e1a00000     nop            @ (mov r0, r0)
 80001b4:    e28bd000     add    sp, fp, #0
 80001b8:    e49db004     pop    {fp}        @ (ldr fp, [sp], #4)
 80001bc:    e12fff1e     bx    lr
 80001c0:    20000004     .word    0x20000004

080001c4 <clocks_init>:
 80001c4:    e52db004     push    {fp}        @ (str fp, [sp, #-4]!)
 80001c8:    e28db000     add    fp, sp, #0
 80001cc:    e1a00000     nop            @ (mov r0, r0)
 80001d0:    e28bd000     add    sp, fp, #0
 80001d4:    e49db004     pop    {fp}        @ (ldr fp, [sp], #4)
 80001d8:    e12fff1e     bx    lr

080001dc <reset_handler>:
 80001dc:    e92d4800     push    {fp, lr}
 80001e0:    e28db004     add    fp, sp, #4
 80001e4:    e24dd018     sub    sp, sp, #24
 80001e8:    ebfffff5     bl    80001c4 <clocks_init>
 80001ec:    e59f3090     ldr    r3, [pc, #144]    @ 8000284 <reset_handler+0xa8>
 80001f0:    e50b3008     str    r3, [fp, #-8]
 80001f4:    e59f308c     ldr    r3, [pc, #140]    @ 8000288 <reset_handler+0xac>
 80001f8:    e50b3014     str    r3, [fp, #-20]    @ 0xffffffec
 80001fc:    ea000004     b    8000214 <reset_handler+0x38>
 8000200:    e51b3008     ldr    r3, [fp, #-8]
 8000204:    e2832004     add    r2, r3, #4
 8000208:    e50b2008     str    r2, [fp, #-8]
 800020c:    e3a02000     mov    r2, #0
 8000210:    e5832000     str    r2, [r3]
 8000214:    e51b2008     ldr    r2, [fp, #-8]
 8000218:    e51b3014     ldr    r3, [fp, #-20]    @ 0xffffffec
 800021c:    e1520003     cmp    r2, r3
 8000220:    3afffff6     bcc    8000200 <reset_handler+0x24>
 8000224:    e59f3060     ldr    r3, [pc, #96]    @ 800028c <reset_handler+0xb0>
 8000228:    e50b300c     str    r3, [fp, #-12]
 800022c:    e59f305c     ldr    r3, [pc, #92]    @ 8000290 <reset_handler+0xb4>
 8000230:    e50b3010     str    r3, [fp, #-16]
 8000234:    e59f3058     ldr    r3, [pc, #88]    @ 8000294 <reset_handler+0xb8>
 8000238:    e50b3018     str    r3, [fp, #-24]    @ 0xffffffe8
 800023c:    ea000007     b    8000260 <reset_handler+0x84>
 8000240:    e51b200c     ldr    r2, [fp, #-12]
 8000244:    e2823004     add    r3, r2, #4
 8000248:    e50b300c     str    r3, [fp, #-12]
 800024c:    e51b3010     ldr    r3, [fp, #-16]
 8000250:    e2831004     add    r1, r3, #4
 8000254:    e50b1010     str    r1, [fp, #-16]
 8000258:    e5922000     ldr    r2, [r2]
 800025c:    e5832000     str    r2, [r3]
 8000260:    e51b2010     ldr    r2, [fp, #-16]
 8000264:    e51b3018     ldr    r3, [fp, #-24]    @ 0xffffffe8
 8000268:    e1520003     cmp    r2, r3
 800026c:    3afffff3     bcc    8000240 <reset_handler+0x64>
 8000270:    ebffffc3     bl    8000184 <start>
 8000274:    e1a00000     nop            @ (mov r0, r0)
 8000278:    e24bd004     sub    sp, fp, #4
 800027c:    e8bd4800     pop    {fp, lr}
 8000280:    e12fff1e     bx    lr
 8000284:    20000000     .word    0x20000000
 8000288:    20000008     .word    0x20000008
 800028c:    08000350     .word    0x08000350
 8000290:    20000008     .word    0x20000008
 8000294:    20000008     .word    0x20000008

08000298 <nmi_handler>:
 8000298:    e92d4800     push    {fp, lr}
 800029c:    e28db004     add    fp, sp, #4
 80002a0:    e3a00002     mov    r0, #2
 80002a4:    ebffffa9     bl    8000150 <halt>
 80002a8:    e1a00000     nop            @ (mov r0, r0)
 80002ac:    e24bd004     sub    sp, fp, #4
 80002b0:    e8bd4800     pop    {fp, lr}
 80002b4:    e12fff1e     bx    lr

080002b8 <hard_fault_handler>:
 80002b8:    e92d4800     push    {fp, lr}
 80002bc:    e28db004     add    fp, sp, #4
 80002c0:    e3a00003     mov    r0, #3
 80002c4:    ebffffa1     bl    8000150 <halt>
 80002c8:    e1a00000     nop            @ (mov r0, r0)
 80002cc:    e24bd004     sub    sp, fp, #4
 80002d0:    e8bd4800     pop    {fp, lr}
 80002d4:    e12fff1e     bx    lr

080002d8 <mem_manage_handler>:
 80002d8:    e92d4800     push    {fp, lr}
 80002dc:    e28db004     add    fp, sp, #4
 80002e0:    e3a00004     mov    r0, #4
 80002e4:    ebffff99     bl    8000150 <halt>
 80002e8:    e1a00000     nop            @ (mov r0, r0)
 80002ec:    e24bd004     sub    sp, fp, #4
 80002f0:    e8bd4800     pop    {fp, lr}
 80002f4:    e12fff1e     bx    lr

080002f8 <bus_fault_handler>:
 80002f8:    e92d4800     push    {fp, lr}
 80002fc:    e28db004     add    fp, sp, #4
 8000300:    e3a00005     mov    r0, #5
 8000304:    ebffff91     bl    8000150 <halt>
 8000308:    e1a00000     nop            @ (mov r0, r0)
 800030c:    e24bd004     sub    sp, fp, #4
 8000310:    e8bd4800     pop    {fp, lr}
 8000314:    e12fff1e     bx    lr

08000318 <usage_fault_handler>:
 8000318:    e92d4800     push    {fp, lr}
 800031c:    e28db004     add    fp, sp, #4
 8000320:    e3a00006     mov    r0, #6
 8000324:    ebffff89     bl    8000150 <halt>
 8000328:    e1a00000     nop            @ (mov r0, r0)
 800032c:    e24bd004     sub    sp, fp, #4
 8000330:    e8bd4800     pop    {fp, lr}
 8000334:    e12fff1e     bx    lr

08000338 <_init>:
 8000338:    e1a0c00d     mov    ip, sp
 800033c:    e92ddff8     push    {r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc}
 8000340:    e24cb004     sub    fp, ip, #4

08000344 <_fini>:
 8000344:    e1a0c00d     mov    ip, sp
 8000348:    e92ddff8     push    {r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc}
 800034c:    e24cb004     sub    fp, ip, #4