Мысленно я всегда задавался вопросом, как выглядит команда try / throw / catch за кулисами, когда C ++ компилирует ее и переводит на ассемблер. Но так как я никогда им не пользуюсь, у меня никогда не было времени проверить это (некоторые люди сказали бы, что это ленивый).
Используется ли обычный стек для отслеживания try
s, или отдельный стек для каждого потока сохраняется только для этой цели? Большая или маленькая реализация между MSVC и g ++? Покажите мне, пожалуйста, какой-нибудь псевдо-ассемблер (IA-32 тоже в порядке), чтобы мне никогда не пришлось проверять его сам! :)
Изменить: Теперь я получил основы реализации MSVC по обработке IA-32. Кто-нибудь знает, что такое g ++ на IA-32 или любой другой процессор в этом отношении?
Редактировать 2 (11 лет спустя): Вот некоторые данные о производительности. Они также сделали бесплатный доступ к исходному коду.