vitaly_l писал(а): В коде ассемблера при создании глобальных переменных принудительно присваивается ноль или нет?
Смотря что под этим подразумевать. Фактически, да. Если только речь идет о конкретной
ассемблерной команде, то вряд ли. Если честно, то мне просто пофиг. Это абсолютно ничего не меняет.
vitaly_l писал(а):Если ответ "ДА" - значит нужно писать в баг-трекер, т.к. компилятор врёт, что 0 не инициализирован, т.к. 0 - это инициализированная переменная.
Пиши.... если тебя пошлют пятиэтажным матом, то я предупреждал. Хотя, скорее всего, просто поржут как над нубом... оно тебе надо? Это не баг, а фича созданная из-за привычки некоторых забывать про инициализацию переменных. Так что все правильно компилятор говорит. Другое дело, что иногда есть смысл не заморачиваться с инициализацией так-как переменная инициализируется не так и не там, где ожидается.
vitaly_l писал(а):Если ответ "НЕТ" - то многим программистам, которые: нагло не инициализируют переменные - имеет смысл пересмотреть свой код.
А вот это как раз нужно делать независимо от результатов стандартной инициализации. Программист должен в таких вещах быть параноиком... иначе получится как в сишных программах, которые взламывают все, кому не лень, из-за того, что программисты забывают о стандартных проверках на выход за пределы циклов и прочую "мелочь".
Добавлено спустя 33 минуты 58 секунд:Для особо упертых художников Вот прога:
Код: Выделить всё
program project1;
var
arr:array[1..10] of integer;
begin
end.
вот инициализация массива:
Код: Выделить всё
.section .bss
.balign 4
# [3] arr:array[1..10] of integer;
U_$P$PROJECT1_$$_ARR:
.zero 40
И вот полный ассемблерный листинг
Код: Выделить всё
.file "project1.lpr"
# Begin asmlist al_procedures
.section .text.n__main,"x"
.balign 16,0x90
.globl PASCALMAIN
PASCALMAIN:
.globl _main
_main:
# [project1.lpr]
# [4] begin
pushl %ebp
movl %esp,%ebp
call FPC_INITIALIZEUNITS
# [5] end.
call FPC_DO_EXIT
leave
ret
# End asmlist al_procedures
# Begin asmlist al_globals
.section .bss
.balign 4
# [3] arr:array[1..10] of integer;
U_$P$PROJECT1_$$_ARR:
.zero 40
.section .data.n_INITFINAL,"d"
.balign 4
.globl INITFINAL
INITFINAL:
.long 3,0
.long INIT$_$SYSTEM
.long 0
.long INIT$_$FPINTRES
.long 0,0
.long FINALIZE$_$OBJPAS
.section .data.n_FPC_THREADVARTABLES,"d"
.balign 4
.globl FPC_THREADVARTABLES
FPC_THREADVARTABLES:
.long 1
.long THREADVARLIST_$SYSTEM
.section .data.n_FPC_RESOURCESTRINGTABLES,"d"
.balign 4
.globl FPC_RESOURCESTRINGTABLES
FPC_RESOURCESTRINGTABLES:
.long 0
.section .data.n_FPC_WIDEINITTABLES,"d"
.balign 4
.globl FPC_WIDEINITTABLES
FPC_WIDEINITTABLES:
.long 0
.section .data.n_FPC_RESSTRINITTABLES,"d"
.balign 4
.globl FPC_RESSTRINITTABLES
FPC_RESSTRINITTABLES:
.long 0
.section .fpc.n_version
.balign 16
.ascii "FPC 3.0.0 [2015/11/16] for i386 - Win32"
.section .data.n___heapsize,"d"
.balign 4
.globl __heapsize
__heapsize:
.long 0
.section .data.n___fpc_valgrind,"d"
.globl __fpc_valgrind
__fpc_valgrind:
.byte 0
# End asmlist al_globals