Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сборки MinGW (GCC-win32/win64) 
:(
    Опции темы
Randajad
Дата 16.9.2012, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



Это тот SEH, о котором я думаю?

http://ru.wikipedia.org/wiki/%D1%F2%F0%F3%...%F7%E5%ED%E8%E9

В студии он давным давно есть, например. Но комбинировать простые исключения с SEH в рамках одной функции, насколько помню, нельзя.
А вообще, я плохо представляю случаи, когда оно действительно нужно. У меня в приложении глобальная функция-обработчик таких исключений установлена через SetUnhandledExceptionFilter. И когда приложение решает поделить на ноль - оно отправляет отчет об ошибке, а я смотрю уже дизасм и исправляю. Таких случаев было за несколько лет всего 3. smile

Это сообщение отредактировал(а) Randajad - 16.9.2012, 11:39
PM MAIL   Вверх
boostcoder
Дата 16.9.2012, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Randajad @  16.9.2012,  11:15 Найти цитируемый пост)
похоже, написаны оберки, которые ничего не делают.

хм.. а три месяца назад были добавлены новый тесты.
к тому же, если реализация не готова, к чему писать тесты да еще и добавлять?

спрошу в списке рассылки..

Добавлено через 2 минуты и 6 секунд
Цитата(Randajad @  16.9.2012,  11:38 Найти цитируемый пост)
Это тот SEH, о котором я думаю?

да, но за исключением новых ключевых слов _try/_except/_finaly

Добавлено через 3 минуты и 44 секунды
насколько я понял, единственное отличие SEH в gcc от SJLJ состоит в том, что SEH не создает оверхед..

PM WWW   Вверх
Randajad
Дата 16.9.2012, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



В mingw есть интересный хидер <excpt.h> с __try1, __except1, кстати.
PM MAIL   Вверх
boostcoder
Дата 16.9.2012, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



ааа, макросы. (http://mingw-w64.svn.sourceforge.net/viewvc/mingw-w64/trunk/mingw-w64-headers/crt/excpt.h?view=log)

PM WWW   Вверх
boostcoder
Дата 16.9.2012, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



кто-то может подсказать как юзать __try1() ?

типа такого:
Код

EXCEPTION_DISPOSITION except_handler(struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*) {
}

int main() {
   __try1(except_handler) {
      *((int*)0) = 33;
   } __except1 {
   }
}


не понимаю, как тут юзается __except1...
если при возникновении исключения будет вызван except_handler(), то для чего тут макрос __except1 ?

PM WWW   Вверх
boostcoder
Дата 20.9.2012, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



несколько часов назад состоялся релиз компилятора GCC версии 4.7.2.
было исправлено более 70 багов.
полный список тут.

сборки MinGW на базе GCC 4.7.2 вы уже сейчас можете скачать на странице проекта.

PM WWW   Вверх
Randajad
Дата 23.9.2012, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



Скачал последний 4.7.2.
Код

#include <iostream>

using namespace std;

int main() {
    cout << "Hello world!" << endl;
    return 0;
}



Цитата

g++ -s -Os main.cpp

Получилось 540 кило. Пробовал -flto, то же самое.
Они никогда это не поправят, да? Порой из-за раздувательства кода GCC хочется его выкинуть. А альтернативы с C++11 нету.
PM MAIL   Вверх
boostcoder
Дата 23.9.2012, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Randajad @  23.9.2012,  12:56 Найти цитируемый пост)
Получилось 540 кило.

это нормально...

Цитата(Randajad @  23.9.2012,  12:56 Найти цитируемый пост)
Они никогда это не поправят, да?

а что в этом случае нужно править? подскажи, может быть получится нам двоим пофиксить.

дело в том, что тот размер который ты видишь, это начальный размер включающий все необходимое. далее, при написании большего объема кода при использованием STL, объем будет расти очень медленно.

PM WWW   Вверх
kemiisto
Дата 23.9.2012, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата(Randajad @  23.9.2012,  11:56 Найти цитируемый пост)
А альтернативы с C++11 нету. 

Clang чем не альтернатива?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Randajad
Дата 23.9.2012, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



Ни одного билда под вянду нету. Пробовал сам собирать - остались не лучшие впечатления.
PM MAIL   Вверх
boostcoder
Дата 23.9.2012, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(kemiisto @  23.9.2012,  13:04 Найти цитируемый пост)
Clang чем не альтернатива?

у него нет своего ассемблера и линкера. а использовать их из gcc/binutils он не может, ибо не поддерживает __thiscall calling-convention.

PM WWW   Вверх
Randajad
Дата 23.9.2012, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



То, что GCC можно сказать никак не выкидывает unused code. Надо подизассемблить экзешку и посмотреть, откуда это лезет, что-ли. Может, в сырцы GCC залезть.
Hello world в 500 кило - это ужасно. Это все хорошо, что если я буду юзать все из iostream, то размер расти не будет. Но мне оно не нужно, его инклюдят boost и другие вещи.
Студия тот же код компиляет в 8 кило.
PM MAIL   Вверх
boostcoder
Дата 23.9.2012, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Randajad, ты не пробовал разузнать об этом?
я узнавал по поводу начального размера Си-программы(22-30 кб). объяснили, что его можно уменьшить оптимизируя CRT.

PM WWW   Вверх
Randajad
Дата 23.9.2012, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



Выцепил пару строк из iostream, которые раздувают код.

Код

#include <istream>

namespace std
{
  static ios_base::Init __ioinit;
} // namespace


Это используется для инициализации cout, cin и прочих стандартных шняг. Надо бы в сырцы этой штуки залезть.
PM MAIL   Вверх
boostcoder
Дата 23.9.2012, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



вроде бы вот этот сорец.
не?

Добавлено через 4 минуты и 20 секунд
судя по строкам 87-96, тут происходит инициализация.
а вот декларация этого Init.

Добавлено через 6 минут и 20 секунд
хочу обратить твое внимание на то, что реализация Init находится в .cpp файле, а значит, в libstdc++.dll. почему же тогда код exe`шки распухает?

Добавлено через 7 минут и 25 секунд
Цитата(Randajad @  23.9.2012,  13:23 Найти цитируемый пост)
static ios_base::Init __ioinit;

хотя, это говорит об обратном.
запутался smile

Добавлено через 10 минут и 40 секунд
Цитата(Randajad @  23.9.2012,  13:23 Найти цитируемый пост)
static ios_base::Init __ioinit;

если закомментить эту строку, размер exe`шки уменьшится?

PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0934 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.