Re[3]: 20 ловушек переноса Си++ - кода на 64-битную платформ
От: avbochagov Россия  
Дата: 21.03.07 14:06
Оценка:
Здравствуйте, Analytic2007, Вы писали:


A>>А на русском будет версия?


A>http://www.viva64.com/articles/rus/20%20issues%20of%20porting%20C++%20code%20on%20the%2064-bit%20platform%20(rus).pdf


Вот спасибо за оперативность и за статью
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[3]: 20 ловушек переноса Си++ - кода на 64-битную платформ
От: Пётр Седов Россия  
Дата: 21.03.07 16:04
Оценка:
Здравствуйте, Analytic2007, Вы писали:

A>>А на русском будет версия?

A>http://www.viva64.com/articles/rus/20%20issues%20of%20porting%20C++%20code%20on%20the%2064-bit%20platform%20(rus).pdf
Интересная статья, хотя русский язык часто хромает, например:

Заключение

Мы будем рады получить ваши отзывы, замечания, поправки, дополнения и непременно внесу их в следующую версию статьи.


6. Упаковка указателей

В конце хочется заметить, что плохим стилем будет упаковка указателя в типы всегда равные 64-битам. Показанный далее код вновь придётся исправлять с приходом 128-битных систем.

PVOID p;
// Bad style. The 128-bit time will come.
__int64 n = __int64(p);
p = PVOID(n);

А что, существуют 128-битные платформы? Хотя бы в планах?
Пётр Седов (ушёл с RSDN)
Re[2]: Int24
От: Пётр Седов Россия  
Дата: 21.03.07 16:13
Оценка:
Здравствуйте, 0x8000FFFF, Вы писали:
FFF>После чего в своем коде используются не стандартные int, long и т д... а свои введенные, аля
FFF>INT8, INT16, INT24, INT32, INT64, а так же размеры адресного пространства и многие другие вещи.
Int24 – это на каких платформах бывает?
Пётр Седов (ушёл с RSDN)
Re[4]: 20 ловушек переноса Си++ - кода на 64-битную платформ
От: Lepsik Гондурас https://www.kirdyk.club/
Дата: 21.03.07 16:21
Оценка:
ПС>А что, существуют 128-битные платформы? Хотя бы в планах?


PlayStation 2 computer entertainment system's Emotion Engine CPU is a 128-bit processor.

The AS/400 instruction set defines all pointers as 128-bit.
Re[3]: Int24
От: Lepsik Гондурас https://www.kirdyk.club/
Дата: 21.03.07 16:22
Оценка:
ПС>Здравствуйте, 0x8000FFFF, Вы писали:
FFF>>После чего в своем коде используются не стандартные int, long и т д... а свои введенные, аля
FFF>>INT8, INT16, INT24, INT32, INT64, а так же размеры адресного пространства и многие другие вещи.
ПС>Int24 – это на каких платформах бывает?


Еще ЕС-ки были 48-битные
Re[5]: 128-битные платформы
От: Пётр Седов Россия  
Дата: 21.03.07 16:41
Оценка:
Здравствуйте, Lepsik, Вы писали:
ПС>>А что, существуют 128-битные платформы? Хотя бы в планах?
L>PlayStation 2 computer entertainment system's Emotion Engine CPU is a 128-bit processor.
PlayStation 2 – это 32-битная платформа (там всего лишь 32 MB оперативной памяти). int и указатели там 32-битные.
Пётр Седов (ушёл с RSDN)
Re[5]: 20 ловушек переноса Си++ - кода на 64-битную платформ
От: Analytic2007 Россия https://www.viva64.com/ru/pvs-studio/
Дата: 21.03.07 16:47
Оценка:
Здравствуйте, Аноним, Вы писали:

K>>>>unsigned char *array[50];

K>>>>unsigned char size = sizeof(array);
K>>>>32-bit system: sizeof(array) = 200
K>>>>64-bit system: sizeof(array) = 400

А>Ну так это проблема не 64-битных систем, а кривости рук разработчика. Если ему придется заменить на char *array[100] возникнет точно такая проблема.


Да. Но, смысл был в том, чтобы подчеркнуть важность предупреждений выдаваемых компилятором, при переносе
программы на новую платформу.
Re[2]: 20 ловушек переноса Си++ - кода на 64-битную платформ
От: Analytic2007 Россия https://www.viva64.com/ru/pvs-studio/
Дата: 21.03.07 16:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>сходу не увидел про работу с файлами и off_t и f_pos.

А>имхо надо бы добавить

Лично я с проблемами при работе с файлами не сталкивался. А, фантазировать не хочется. Буду благодарен Вам за пример подобных ошибок (связанных с off_t и f_pos).
Re[4]: 20 ловушек переноса Си++ - кода на 64-битную платформ
От: Analytic2007 Россия https://www.viva64.com/ru/pvs-studio/
Дата: 21.03.07 17:00
Оценка:
Здравствуйте, avbochagov, Вы писали:

A>Здравствуйте, Analytic2007, Вы писали:



A>>>А на русском будет версия?


A>>http://www.viva64.com/articles/rus/20%20issues%20of%20porting%20C++%20code%20on%20the%2064-bit%20platform%20(rus).pdf


A>Вот спасибо за оперативность и за статью


Ну, по поводу оперативности.... Статья на русском ужу готова была. При чем мы месяц назад хотели ее здесь на RSDN выложить. Написали письмо. В ответ уже месяц тишина.
Re[4]: 20 ловушек переноса Си++ - кода на 64-битную платформ
От: Analytic2007 Россия https://www.viva64.com/ru/pvs-studio/
Дата: 21.03.07 17:05
Оценка:
Здравствуйте, Пётр Седов, Вы писали:

ПС>Мы будем рады получить ваши отзывы, замечания, поправки, дополнения и непременно внесу их в следующую версию

Эх. Учтем. Спасибо.

ПС>А что, существуют 128-битные платформы? Хотя бы в планах?

Если и нет — то будут.
Re[2]: 20 ловушек переноса Си++ - кода на 64-битную платформ
От: Analytic2007 Россия https://www.viva64.com/ru/pvs-studio/
Дата: 21.03.07 17:15
Оценка:
Здравствуйте, 0x8000FFFF, Вы писали:

FFF>Обычно все проблемы решаются, когда пишешь изначально кросплатформенный код.

FFF>Пишется библиотека, определяются общие типы, которые уже опредлеляются для каждой платформы, операции над типам, учитываются BigEngian, LittleEndian или другая платформа.

FFF>После чего в своем коде используются не стандартные int, long и т д... а свои введенные, аля

FFF>INT8, INT16, INT24, INT32, INT64, а так же размеры адресного пространства и многие другие вещи.

FFF>После чего имеем код, который компилится под любую платформу и прекрасно там работает =)


1) Мы сами пробовали такой подход и остались недовольны. Но спорить не буду.
Это отдельную статью писать надо.

2) То, что предлагается, к сожалению никак не может помочь при переносе УЖЕ существующего кода.
Re[2]: 20 ловушек переноса Си++ - кода на 64-битную платформ
От: Analytic2007 Россия https://www.viva64.com/ru/pvs-studio/
Дата: 21.03.07 17:29
Оценка:
Здравствуйте, Eugene Kilachkoff, Вы писали:

EK>-1. Что у вас с кернингом? В evince под линуксом (движок xpdf) буквы просто наезжают друг на друга, в acrobat reader'е под виндой эффект меньше, но все равно есть.

Будем смотреть. Спасибо.

EK>0. Английский язык, мягко говоря, стремный. Например "capable to keep" --> "capable of keeping" и многое другое, русскоязычное построение предложений просто выпирает.


Знаем. Постараемся улучшить. Кто читает английский вариант — большая просьба присылать пометки (karpov@viva64 .dot. com). Будем очень благодарны.

EK>Далее по разделам.


EK>2. Это не проблема функций с переменным числом аргументов. Функция int sum_int(unsigned count,...); от этого не страдает. Это проблема функций с c-style форматными строками.


Не обязательно. Можно и нечто новое придумать. Проблема функций с c-style форматными строками — просто самая распространенная.

Спасибо за замечания.
Re[6]: 128-битные платформы
От: Lepsik Гондурас https://www.kirdyk.club/
Дата: 22.03.07 02:34
Оценка:
чтобы так безапеляционно завлять надо знать предмет уважаемый

http://arstechnica.com/cpu/1q99/playstation2-cpu.html
Re[7]: PlayStation 2
От: Пётр Седов Россия  
Дата: 22.03.07 16:29
Оценка:
Здравствуйте, Lepsik, Вы писали:

L>чтобы так безапеляционно завлять надо знать предмет уважаемый

L>http://arstechnica.com/cpu/1q99/playstation2-cpu.html
Там нет размеров int-а или указателя.

PATCH: 64 bit cleanups for Lua 5.1-work2:

Here is a table of the common data models that Lua supports:

Data modelshortintlonglong longvoid*size_tptrdiff_tPlatform examples
LP32161632-321632WIN16, MSDOS-large
ILP32163232[64]323232WIN32, Unix-32bit
L64163264-323232PS2
LP6416326464646464Unix-64bit
LLP6416323264646464WIN64
ILP6416646464646464(abandoned ~'95)

Поэтому с точки зрения C/C++-программиста PlayStation 2 – это 32-битная платформа. Оно и понятно: чтобы адресовать 32 MB оперативной памяти, 32-битного указателя вполне достаточно (а вот 128-битный указатель – это был бы перебор).
Пётр Седов (ушёл с RSDN)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.