- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
ㅌㄹ ㄱㅌ ; Помещаем в BX текущее значение регистра ES <───────┐
ㅈㅿ ; Загружаем младший байт регистра флагов в AH │
; │
ㅊㅋ ; В пару ES:DI кладем то, что сейчас находится в AX │
; |
ㄹㅅ ; Дважды увеличиваем значение регистра DI |
ㄹㅅ ; на одну единицу |
; │
ㅎㅋ ㅿㅈ ; Образуем бесконечный цикл >───────┘
Господа, ОНО вернулось. Следующая итерация всеми нами любимого и восхваляемого [имя, которое нель̸̗̠̘̘̪̳̩зя произносить]. Я б̞̫͔̜ы на вашем ме̤̣̺͇̫с̨͈те покинул стр̵а̻̘̪̙͎̳̕н̬̙̤̙̪̝̺͠ицу. С̫е̜й̱͎ч̦̦̝͔а̙͓͓с̛̩̞̘ ̫̹͙̲̤̖͉ж̶͉̻е҉̼̦.
guest8 05.11.2018 13:37 # −999
bormand 05.11.2018 14:48 # −1
guest8 05.11.2018 15:25 # −999
roman-kashitsyn 05.11.2018 15:30 # 0
да.
> Почему компилятор не ругается?
Потому что проблема останова не разрешима. А вдруг c_str() иногда возвращает nullptr или статическую пустую строку, тогда никакого UB не будет.
guest8 05.11.2018 15:34 # −999
bormand 05.11.2018 15:34 # 0
В дебаге или в релизе?
guest8 05.11.2018 15:36 # −999
bormand 05.11.2018 15:41 # 0
Теперь ты спокоен?
guest8 05.11.2018 16:51 # −999
roman-kashitsyn 06.11.2018 16:04 # 0
У тебя неправильный посыл.
Вся суть сишки и плюсцов в том, что компилятор имеет полное право считать, что НИКАКОГО UB В ПРОГРАММЕ НЕТ. Программист — царь, он сделал всё правильно, и исходя из этого компилятор может делать кучу оптимизаций. Поэтому когда компилятор видит твою строчку, он думает не "опа, УБ!", а "опа, господин позаботился о том, что в этом выражении нет УБ, как мне это оптимизнуть?".
KitKat 06.11.2018 16:54 # 0
1024-- 05.11.2018 22:42 # 0
Ладно, статическая строка (даже непустая) - это понятно.
А вот nullptr - это реальность c_str или обобщение случая до произвольной функции?
guest8 05.11.2018 22:44 # −999
1024-- 05.11.2018 22:50 # 0
Или у std::string в области значений есть не только "", но и NULL?
guest8 05.11.2018 22:52 # −999
1024-- 05.11.2018 23:26 # 0
Должен вернуть то же самое. По крайней мере, явно инициализируется пустой строкой, а не нулевым указателем.
inkanus_gray 05.11.2018 23:28 # 0
guest8 05.11.2018 23:29 # −999
guest8 05.11.2018 23:31 # −999
1024-- 05.11.2018 23:33 # 0
guest8 05.11.2018 23:33 # −999
guest8 05.11.2018 23:35 # −999
guest8 05.11.2018 23:36 # −999
OREO 06.11.2018 02:03 # 0
guest8 05.11.2018 23:37 # −999
1024-- 05.11.2018 23:41 # 0
Кстати, не сразу заметил, что там "_", поначалу думал, что "e" в "gray".
inkanus-gray 05.11.2018 23:39 # 0
guest8 05.11.2018 23:47 # −999
1024-- 05.11.2018 23:31 # 0
В это можно только уверовать. А те, кто верит, что я не чья-то файка, об этом не спрашивают, им и доказательств не нужно.
guest8 06.11.2018 23:38 # −999
bormand 05.11.2018 15:30 # 0
> Почему компилятор не ругается
Он не знает что вернул c_str(). Может быть там копия strdup'нутая и всё ок...
guest8 05.11.2018 15:35 # −999
1024-- 05.11.2018 22:39 # 0
А почему так?
c_str специально реализован так, чтобы у std::string с небольшой вероятностью вызывался strdup и текла память?
Или оптимизатор после всех преобразований уже код c_str очень слабо видит и не помнит, что там за функция была?
bormand 06.11.2018 00:50 # 0
1024-- 06.11.2018 18:51 # 0
Ну а строка - это же шаблонная питушня -- более открытая, чем другое.
В общем, печально, что не знает.
guest8 07.11.2018 00:35 # −999
bormand 07.11.2018 01:48 # 0
guest8 07.11.2018 02:53 # −999
bormand 07.11.2018 07:25 # 0
guest8 07.11.2018 15:11 # −999
vistefan 07.11.2018 15:25 # 0
> даже апкейсу нельзя доверять
После слова ДАЖЕ идёт более сложная задача. В случае с валютами ведь нет проблем с кодировками, хуё-моё. Расставил пробелы и точку или запятую и всё. Апкейст-то похардовее будет.
guest8 05.11.2018 15:54 # −999
guest8 05.11.2018 16:04 # −999
guest8 05.11.2018 16:10 # −999
guest8 05.11.2018 21:09 # −999
inkanus_gray 05.11.2018 23:28 # 0
666_N33D135 06.11.2018 04:05 # 0
guest8 06.11.2018 04:13 # −999
inkanus_gray 07.11.2018 20:53 # 0
Steve_Brown 06.11.2018 15:15 # 0