Форум программистов, компьютерный форум CyberForum.ru

Битовые утечки при записи данных на диск - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Builtin функции http://www.cyberforum.ru/cpp/thread1755256.html
Погружение в сабж. Компилятор gcc. Имеет ли смысл вообще их изучать, какие из них действительно надо знать, ибо полезные? И вообще, как можно относиться к их использованию в коде?
C++ Ищу исходники для игры pinball Всем Доброго времени суток ! Есть-ли у кого нибуть исходники для игры pinball (желательно с комментариями) ? Буду очень благодарен если кто-то скинет ! Добавлено через 33 секунды заранее благодарен ! http://www.cyberforum.ru/cpp/thread1754811.html
C++ Опрос про чувствительность к регистру
Языки программирования бывают чувствительные (думаю, большинство) и нечувствительные к регистру букв. Для кого-то удобны вторые языки, кто-то со строгим подходом считает, что первые - это канон, а нечувствительность к регистру переменных/функций развращает мозг прогера. Хотелось бы услышать мнения пользователей CyberForum-а о том, чем хороша/плоха чувствительность/нечувствительность к регистру...
C++ Как запустить проект, используя компилятор LLVM?
Собрал под виндой LLVM. Все вроде нормально. либы есть,хидеры есть, бинари есть. Надо, думаю,попробовать с llvm'овскими либами что-нибудь собрать. полез в инет,все сделал по инструкции. Но в настройках проекта нет ни нужных либ, ни нужных хидеров... печаль. Структура каталогов такова: D:\llvm-3.4 - сорцы ллвм, D:\llvm-build - уже собраное все. Выставил переменную среды...
C++ Найти всевозможные комбинации паролей и сохранить их в блокнот http://www.cyberforum.ru/cpp/thread1753001.html
Нужна помощь, дело такое, поставил на пароль архив, пароль забыл. Но, помню , что пароль состоял из двух основных паролей ( а их всего от 4 до 6, в зависимости от конечных цифр). Методом грубого перебора постоянно сбиваюсь какие пароли уже вводил и тд. Хочу попробовать перебор по словарю, для этого нужно найти всевозможные комбинации паролей и чтоб они сохранились в блокнот.
C++ Умножить две квадратные матрицы, используя ассемблерные вставки Зравствуйте! Требуется написать программу умножения двух квадратных матриц используя ассемблерные вставки и сравнить с обычным умножением в C++ (то есть: a * b). Я написал такой код: #include <iostream> #include <ctime> void multiply(int *a, int *b, int *c, int n) { _asm { MOV EDI, a MOV ESI, b подробнее

Показать сообщение отдельно
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
15.06.2016, 16:59     Битовые утечки при записи данных на диск
Вот что выдал gcc 4.9.3 с -O2:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
    .file   "main.cpp"
    .intel_syntax noprefix
# GNU C++ (Gentoo 4.9.3 p1.5, pie-0.6.4) version 4.9.3 (x86_64-pc-linux-gnu)
#   compiled by GNU C version 4.9.3, GMP version 6.0.0, MPFR version 3.1.3-p4, MPC version 1.0.2
# GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
# options passed:  -D_GNU_SOURCE main.cpp -masm=intel -mtune=generic
# -march=x86-64 -O2 -fverbose-asm -fstack-protector-strong
# options enabled:  -faggressive-loop-optimizations
# -fasynchronous-unwind-tables -fauto-inc-dec -fbranch-count-reg
# -fcaller-saves -fcombine-stack-adjustments -fcommon -fcompare-elim
# -fcprop-registers -fcrossjumping -fcse-follow-jumps -fdefer-pop
# -fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively
# -fdwarf2-cfi-asm -fearly-inlining -feliminate-unused-debug-types
# -fexceptions -fexpensive-optimizations -fforward-propagate -ffunction-cse
# -fgcse -fgcse-lm -fgnu-runtime -fgnu-unique -fguess-branch-probability
# -fhoist-adjacent-loads -fident -fif-conversion -fif-conversion2
# -findirect-inlining -finline -finline-atomics
# -finline-functions-called-once -finline-small-functions -fipa-cp
# -fipa-profile -fipa-pure-const -fipa-reference -fipa-sra
# -fira-hoist-pressure -fira-share-save-slots -fira-share-spill-slots
# -fisolate-erroneous-paths-dereference -fivopts -fkeep-static-consts
# -fleading-underscore -flifetime-dse -fmath-errno -fmerge-constants
# -fmerge-debug-strings -fmove-loop-invariants -fomit-frame-pointer
# -foptimize-sibling-calls -foptimize-strlen -fpartial-inlining -fpeephole
# -fpeephole2 -fprefetch-loop-arrays -free -freg-struct-return
# -freorder-blocks -freorder-blocks-and-partition -freorder-functions
# -frerun-cse-after-loop -fsched-critical-path-heuristic
# -fsched-dep-count-heuristic -fsched-group-heuristic -fsched-interblock
# -fsched-last-insn-heuristic -fsched-rank-heuristic -fsched-spec
# -fsched-spec-insn-heuristic -fsched-stalled-insns-dep -fschedule-insns2
# -fshow-column -fshrink-wrap -fsigned-zeros -fsplit-ivs-in-unroller
# -fsplit-wide-types -fstack-protector-strong -fstrict-aliasing
# -fstrict-overflow -fstrict-volatile-bitfields -fsync-libcalls
# -fthread-jumps -ftoplevel-reorder -ftrapping-math -ftree-bit-ccp
# -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-coalesce-vars
# -ftree-copy-prop -ftree-copyrename -ftree-cselim -ftree-dce
# -ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre
# -ftree-loop-if-convert -ftree-loop-im -ftree-loop-ivcanon
# -ftree-loop-optimize -ftree-parallelize-loops= -ftree-phiprop -ftree-pre
# -ftree-pta -ftree-reassoc -ftree-scev-cprop -ftree-sink -ftree-slsr
# -ftree-sra -ftree-switch-conversion -ftree-tail-merge -ftree-ter
# -ftree-vrp -funit-at-a-time -funwind-tables -fverbose-asm
# -fzero-initialized-in-bss -m128bit-long-double -m64 -m80387
# -malign-stringops -mavx256-split-unaligned-load
# -mavx256-split-unaligned-store -mfancy-math-387 -mfp-ret-in-387 -mfxsr
# -mglibc -mieee-fp -mlong-double-80 -mmmx -mno-sse4 -mpush-args -mred-zone
# -msse -msse2 -mtls-direct-seg-refs -mvzeroupper
 
    .section    .rodata.str1.1,"aMS",@progbits,1
.LC0:
    .string "Table asc ready. Read:"
.LC1:
    .string "%d"
    .section    .rodata.str1.8,"aMS",@progbits,1
    .align 8
.LC2:
    .string "\nError at adr(%X). Value: %X must be: %X\n"
    .section    .rodata.str1.1
.LC3:
    .string "Table clear ready. Read:"
    .section    .rodata.str1.8
    .align 8
.LC4:
    .string "\nError at adr(%X). Value: %X must be: 0\n"
    .section    .rodata.str1.1
.LC5:
    .string "Table bit ready. Read:"
.LC6:
    .string "Table asc2 ready. Read:"
.LC7:
    .string "Array at addres (%X). \n"
    .section    .text.unlikely,"ax",@progbits
.LCOLDB8:
    .section    .text.startup,"ax",@progbits
.LHOTB8:
    .p2align 4,,15
    .globl  main
    .type   main, @function
main:
.LFB45:
    .cfi_startproc
    push    r13 #
    .cfi_def_cfa_offset 16
    .cfi_offset 13, -16
    push    r12 #
    .cfi_def_cfa_offset 24
    .cfi_offset 12, -24
    push    rbp #
    .cfi_def_cfa_offset 32
    .cfi_offset 6, -32
    push    rbx #
    .cfi_def_cfa_offset 40
    .cfi_offset 3, -40
    sub rsp, 8  #,
    .cfi_def_cfa_offset 48
.L2:
    movabs  rdi, 8589934592 #,
    call    malloc  #
    mov esi, OFFSET FLAT:.LC7   #,
    mov rdx, rax    #, b
    mov r12, rax    # b,
    mov edi, 1  #,
    xor eax, eax    #
    call    __printf_chk    #
    mov eax, 50331648   # ivtmp.97,
    .p2align 4,,10
    .p2align 3
.L3:
    mov QWORD PTR [r12-402653184+rax*8], rax    # MEM[base: b_35, index: ivtmp.97_2, step: 8, offset: -402653184B], ivtmp.97
    add rax, 1  # ivtmp.97,
    cmp rax, 1124073472 # ivtmp.97,
    jne .L3 #,
    mov esi, OFFSET FLAT:.LC0   #,
    mov edi, 1  #,
    xor eax, eax    #
    xor r13d, r13d  # m
    call    __printf_chk    #
.L6:
    mov edx, r13d   #, m
    mov esi, OFFSET FLAT:.LC1   #,
    mov edi, 1  #,
    xor eax, eax    #
    mov rbp, r12    # ivtmp.83, b
    mov ebx, 50331648   # c,
    call    __printf_chk    #
    .p2align 4,,10
    .p2align 3
.L5:
    mov rcx, QWORD PTR [rbp+0]  # D.3998, MEM[base: _45, offset: 0B]
    cmp rcx, rbx    # D.3998, c
    je  .L4 #,
    mov r8, rbx #, c
    mov rdx, rbp    #, ivtmp.83
    mov esi, OFFSET FLAT:.LC2   #,
    mov edi, 1  #,
    xor eax, eax    #
    call    __printf_chk    #
.L4:
    add rbx, 1  # c,
    add rbp, 8  # ivtmp.83,
    cmp rbx, 1124073472 # c,
    jne .L5 #,
    cmp r13d, 1 # m,
    jne .L19    #,
    mov edi, 10 #,
    movabs  rbp, 8589934592 # tmp172,
    call    putchar #
    add rbp, r12    # D.4000, b
    mov rax, r12    # ivtmp.73, b
    .p2align 4,,10
    .p2align 3
.L7:
    mov QWORD PTR [rax], 0  # MEM[base: _55, offset: 0B],
    add rax, 8  # ivtmp.73,
    cmp rax, rbp    # ivtmp.73, D.4000
    jne .L7 #,
    mov esi, OFFSET FLAT:.LC3   #,
    mov edi, 1  #,
    xor eax, eax    #
    xor r13d, r13d  # m
    call    __printf_chk    #
.L10:
    mov edx, r13d   #, m
    mov esi, OFFSET FLAT:.LC1   #,
    mov edi, 1  #,
    xor eax, eax    #
    mov rbx, r12    # ivtmp.59, b
    call    __printf_chk    #
    jmp .L9 #
    .p2align 4,,10
    .p2align 3
.L8:
    add rbx, 8  # ivtmp.59,
    cmp rbp, rbx    # D.4000, ivtmp.59
    je  .L39    #,
.L9:
    mov rcx, QWORD PTR [rbx]    # D.3998, MEM[base: _57, offset: 0B]
    test    rcx, rcx    # D.3998
    je  .L8 #,
    mov rdx, rbx    #, ivtmp.59
    xor eax, eax    #
    mov esi, OFFSET FLAT:.LC4   #,
    mov edi, 1  #,
    add rbx, 8  # ivtmp.59,
    call    __printf_chk    #
    cmp rbp, rbx    # D.4000, ivtmp.59
    jne .L9 #,
.L39:
    cmp r13d, 1 # m,
    jne .L20    #,
    mov edi, 10 #,
    call    putchar #
    mov rax, r12    # ivtmp.51, b
    .p2align 4,,10
    .p2align 3
.L11:
    mov QWORD PTR [rax], -1 # MEM[base: _66, offset: 0B],
    add rax, 8  # ivtmp.51,
    cmp rax, rbp    # ivtmp.51, D.4000
    jne .L11    #,
    mov esi, OFFSET FLAT:.LC5   #,
    mov edi, 1  #,
    xor eax, eax    #
    xor r13d, r13d  # m
    call    __printf_chk    #
.L14:
    mov edx, r13d   #, m
    mov esi, OFFSET FLAT:.LC1   #,
    mov edi, 1  #,
    xor eax, eax    #
    mov rbx, r12    # ivtmp.37, b
    call    __printf_chk    #
    .p2align 4,,10
    .p2align 3
.L13:
    mov rcx, QWORD PTR [rbx]    # D.3998, MEM[base: _68, offset: 0B]
    cmp rcx, -1 # D.3998,
    je  .L12    #,
    mov r8, -1  #,
    mov rdx, rbx    #, ivtmp.37
    mov esi, OFFSET FLAT:.LC2   #,
    mov edi, 1  #,
    xor eax, eax    #
    call    __printf_chk    #
.L12:
    add rbx, 8  # ivtmp.37,
    cmp rbp, rbx    # D.4000, ivtmp.37
    jne .L13    #,
    cmp r13d, 1 # m,
    jne .L21    #,
    mov edi, 10 #,
    call    putchar #
    mov eax, 50331648   # c,
    .p2align 4,,10
    .p2align 3
.L15:
    mov QWORD PTR [r12-402653184+rax*8], rax    # MEM[base: b_35, index: c_131, step: 8, offset: -402653184B], c
    add rax, 1  # c,
    cmp rax, 1124073472 # c,
    jne .L15    #,
    mov esi, OFFSET FLAT:.LC6   #,
    mov edi, 1  #,
    xor eax, eax    #
    xor r13d, r13d  # m
    call    __printf_chk    #
.L18:
    mov edx, r13d   #, m
    mov esi, OFFSET FLAT:.LC1   #,
    mov edi, 1  #,
    xor eax, eax    #
    mov rbp, r12    # ivtmp.12, b
    mov ebx, 50331648   # c,
    call    __printf_chk    #
    .p2align 4,,10
    .p2align 3
.L17:
    mov rcx, QWORD PTR [rbp+0]  # D.3998, MEM[base: _80, offset: 0B]
    cmp rcx, rbx    # D.3998, c
    je  .L16    #,
    mov r8, rbx #, c
    mov rdx, rbp    #, ivtmp.12
    mov esi, OFFSET FLAT:.LC2   #,
    mov edi, 1  #,
    xor eax, eax    #
    call    __printf_chk    #
.L16:
    add rbx, 1  # c,
    add rbp, 8  # ivtmp.12,
    cmp rbx, 1124073472 # c,
    jne .L17    #,
    cmp r13d, 1 # m,
    jne .L22    #,
    mov edi, 10 #,
    call    putchar #
    mov rdi, r12    #, b
    call    free    #
    jmp .L2 #
.L21:
    mov r13d, 1 # m,
    jmp .L14    #
.L22:
    mov r13d, 1 # m,
    jmp .L18    #
.L20:
    mov r13d, 1 # m,
    jmp .L10    #
.L19:
    mov r13d, 1 # m,
    jmp .L6 #
    .cfi_endproc
.LFE45:
    .size   main, .-main
    .section    .text.unlikely
.LCOLDE8:
    .section    .text.startup
.LHOTE8:
    .ident  "GCC: (Gentoo 4.9.3 p1.5, pie-0.6.4) 4.9.3"
    .section    .note.GNU-stack,"",@progbits
Добавлено через 4 минуты
Вот внутренняя часть цикла msvc:
Assembler
1
2
3
4
5
6
7
8
9
10
$LL40@main:
 
; 19   :            b[i]=k+i;
 
movsxd   rcx, eax
inc  rdx
inc  eax
mov  QWORD PTR [rbp+rdx*8-8], rcx
cmp  rdx, 1073741824        ; 40000000H
jl   SHORT $LL40@main
А вот gcc:
Assembler
1
2
3
4
5
.L3:
    mov QWORD PTR [r12-402653184+rax*8], rax    # MEM[base: b_35, index: ivtmp.97_2, step: 8, offset: -402653184B], ivtmp.97
    add rax, 1  # ivtmp.97,
    cmp rax, 1124073472 # ivtmp.97,
    jne .L3 #,
Код достаточно разный.
 
Текущее время: 02:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru