LG.BALUKATION's Weblog

Ничего, это тоже кое-что… А при желании из него можно сделать что угодно

Большие числа

Posted by LG.BALUKATION на 2008/09/24

Сегодня вечером я решил уточнить вопрос 64-битности «Леопарда».

До этого мне доводилось использовать только 64-битный Gentoo Linux. Когда-то качал специально венду хэпэ, но так и не найдя некоторых драйверов даже не рискнул ставить. Вроде как установленная ещё весной соляра тож держит «большие числа», но там я так и не удосужился посмотреть, т. к. не пользуюсь ей вообще.

Итак, MacOS X 10.5 был заявлен как революционный в этом отношении для Apple продукт. По сравнению с прошлой версией, поддержка 64-битности тут расширилась на такие технологии как Java, Cocoa, OpenGL, X11 и что-то ещё. В общем, теперь можно ваять не только консольные проги, но и графический интерфейс или например игры!

Однако меня пока интересует базовая поддержка и посему перечисленные выше прекрасные и не очень технологии останутся в стороне. Для проверки же базового функционала я написал простенький консольный тестик.

Его суть сводится к выводу на консоль размеров основных типов данных в Си/C++. Сам он написан на C++, однако это не принципиально — мне просто интересно, держит-ли местный GCC 64-битный код или нет.

Первые результаты меня огорчили — GCC по-умолчанию создаёт 32-битные приложения. В Gentoo всё было не так — там уж если собрал 64-битную систему, то и получай 64-битрность повсюду и 32 бита можно прикрутить отдельно через совместимость. Видимо Apple пошли более мягким путём и решили обеспечить повсеместную, но не обязательную к использованию поддержку 64-битности, оставив разработчикам самим решать, когда следует переходить на более прогрессивные технологии.

Как выяснилось, для создания 64-битного кода надо поменять всего одну опцию, однако эта опция отличается от аналогичной в Linux. Так что будем думать, что макось это обычный 64-битный UNIX, просто у неё «режим совместимости» включен по-умолчанию =)

Мой код:
/*
* test.cpp — simple data sizes test
* CopyLeft (c) 2008, Oleg «LG.BALUKATION» Baluk
*/

#include

using namespace std;

int main (int argc, char** argv)
{
void *p;

cout << "Hi, this is simple test by LGB!" << endl; cout << "Type\t\tSize (in bites)" << endl; cout << "char\t\t" << sizeof(char) * 8 << endl; cout << "short\t\t" << sizeof(short) * 8 << endl; cout << "int\t\t" << sizeof(int) * 8 << endl; cout << "long\t\t" << sizeof(long) * 8 << endl; cout << "long long\t" << sizeof(long long) * 8 << endl; cout << "pointer\t\t" << sizeof(p) * 8 << endl; cout << "float\t\t" << sizeof(float) * 8 << endl; cout << "double\t\t" << sizeof(double) * 8 << endl; cout << "long double\t" << sizeof(long double) * 8 << endl; return 0; }[/source] Собирается это дело так:

$ g++ test.cpp -o test
$ g++ test.cpp -o test64 -arch x86_64

Т. е. должно получится три файла включая исходник:

$ ls -lh
total 64
-rwxr-xr-x  1 oleg  staff    13K 24 сен 02:32 test
-rw-r--r--  1 oleg  staff   758B 24 сен 02:25 test.cpp
-rwxr-xr-x  1 oleg  staff   8,9K 24 сен 02:32 test64

test.cpp это исходный код, а исполняемые файлы соответственно откомпилированная прога под 32 и 64 бита. Почему вторая весит меньше я даже и не представляю, мистика прям!

Ну а теперь собственно сами результаты:

$ ./test
Hi, this is simple test by LGB!
Type		Size (in bites)
char		8
short		16
int		32
long		32
long long	64
pointer		32
float		32
double		64
long double	128

$ ./test64 
Hi, this is simple test by LGB!
Type		Size (in bites)
char		8
short		16
int		32
long		64
long long	64
pointer		64
float		32
double		64
long double	128

Вывод — 64 бита есть, если их специально попросить =)

ЗЫЖ линки:
краткая замануха тут
подробная инфа здесь
Снова меня очень радует инфа из первоисточика — не многие компании поддерживают своих разработчиков такой качественной инфой!

Реклама

комментариев 5 to “Большие числа”

  1. D_Alex said

    LGB настолько суров, что сам проверяет 64битность систем =)

  2. Ну просто были кое-какие непонятки, вот уточнил. Не вижу ничего сложного +)

  3. mlclm said

    Хотел спросить, у тебя случайно нет белых пятен на экране?:) Есть люди, которые жалуются, что слишком часто попадаются такие ноуты у Apple. Белые пятна в смысле «высветления», типа дымки.

  4. Да вроде не замечал, хотя у меня обоями стоит рисунок силуэта на чёрном фоне.

  5. Dmitry said

    они сразу не появляются, они потом появляются, так же как и красивые (на любителя) глюки драйверов видео, после перегрева проца видяхи :)

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s