- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
; -------- мув в AX опкода команды UD2 --------
CODE:004051B0 mov al, 0Bh
CODE:004051B2 mov ah, 0Fh
CODE:004051B4 xchg al, ah
CODE:004051B6 push eax ; save opcode
CODE:004051B7 call sub_40A1E5
; -------- вис для отладки --------
; если зависли, то найден дубликат (жестко, но надежно :D )
CODE:0041C676 call hash_FindWord
CODE:0041C67B @@dbllock:
CODE:0041C67B jnc @@dbllock ; <- если хэш найден, то висим
; -------- ну и искомый баг --------
; неправильный цикл поиска последнего элемента списка
CODE:00401698 proc sub_401698
CODE:00401698 mov ecx, [dword_42944C]
CODE:0040169E jecxz loc_4016AA
CODE:004016A0 loc_4016A0:
CODE:004016A0 mov ecx, [ecx] ; ecx = next block
CODE:004016A2 and ecx, ecx
CODE:004016A4 jnz loc_4016A0
CODE:004016A6 mov eax, [ecx+8] ; <-- bag: ECX = 0
CODE:004016A9 retn
CODE:004016AA loc_4016AA:
CODE:004016AA mov eax, [dword_42A58E]
CODE:004016AF retn
CODE:004016AF endp
Искал баги в борландовском компиляторе. Нашел немало забавных моментов, три выкладываю.
Да, а Вы не знали?
Borland C++ тоже говно.
свою функцию выполняет идеально
ps: а программисты в борланде были действительно профи, код вылизан по самое нехочу, снял бы шляпу, если бы борланд был жив.
как будто в этом есть хоть что-то хорошее
переносить асм это значит переписывать большую часть
А это генератор ПСЧ, на моем макроязыке:
Ничего не напоминает? ;)
компилер для своего времени был действительно неплох
зато в интерфейсе и либах багов с головой.
Шляпу снимают чаще перед мертвыми на похоронах.
а программеры уже давно разбежались
и я про что.
насколько я слышал, борланд по сравнению с другими компиляторами всегда был одним из самых отстойных в отношении кодогенерации
А потом что-то пошло наперекосяк, кодогенераторы перестали развиваться, так и оставшись на уровне 90-х.