The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Google представил Си-библиотеку для определения возможностей..., opennews (ok), 07-Фев-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


17. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от denis111email (ok), 08-Фев-18, 01:21 
Для всех архитектур?
Ответить | Правка | Наверх | Cообщить модератору

35. "Google представил Си-библиотеку для определения возможностей..."  –1 +/
Сообщение от пох (?), 08-Фев-18, 08:32 
> Для всех архитектур?

всех трех на которых есть /proc/cpuinfo, что-тотам в sys и команда cpuid ? Ахренеть сложная задача.
А на альфе оно работать и не будет.

Ответить | Правка | Наверх | Cообщить модератору

49. "Google представил Си-библиотеку для определения возможностей..."  +1 +/
Сообщение от Аноним (-), 08-Фев-18, 10:35 
>> Для всех архитектур?
> всех трех на которых есть /proc/cpuinfo, что-тотам в sys и команда cpuid
> ? Ахренеть сложная задача.
> А на альфе оно работать и не будет.

Компилировать будешь для каждого процессора и подгонять под каждый? Ну раз тебе так легко...

Ответить | Правка | Наверх | Cообщить модератору

72. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от пох (?), 08-Фев-18, 13:19 
>>> Для всех архитектур?
>> всех трех на которых есть /proc/cpuinfo, что-тотам в sys и команда cpuid
>> ? Ахренеть сложная задача.
>> А на альфе оно работать и не будет.
> Компилировать будешь для каждого процессора и подгонять под каждый? Ну раз тебе

А что, на си комилировать уже не надо?
Подгонять под каждый, разумеется, нет, это тебе не си, где -march=atom не позволяет запустить на xeon'ах - никто не мешает (в рамках одной общей системы команд) сперва проверять, доступна ли команда/регистр/биты.
Для альфы, разумеется, придется писать полностью отдельно, ну так эта штука на ней все равно не работает. Даром что "компилировать" можно.

> так легко...

да в общем обычная такая задачка для студента курса этак 3го, на курсовой проект, пожалуй, не потянет.
Для зачета курсового придется еще написать ту программу, ради которой понадобилась вообще runtime cpu detection. Не поверишь - скорее всего и это придется делать если и не целиком на ассемблере, то с asm вставками, компиляторы пока на такое не способны.

Ответить | Правка | Наверх | Cообщить модератору

103. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от pavlinux (ok), 09-Фев-18, 03:49 
> А на альфе оно работать и не будет.

Альфа сдохла 18 лет назад, разобрали на запчасти и винтики.  


Ответить | Правка | К родителю #35 | Наверх | Cообщить модератору

97. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от anomymous (?), 08-Фев-18, 21:50 
> Для всех архитектур?

А вот кстати да, была бы тема. Кусок машинного кода для множества архитектур который процессорозависимо джампает на нужную ветку внутри себя, соответственно знает тип процессора, и далее делает "диагностику" по возможностям такового.

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

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

98. "Google представил Си-библиотеку для определения возможностей..."  +3 +/
Сообщение от anomymous (?), 08-Фев-18, 22:29 
Дабы понимать, о чём я, простой пример

18 7E - эта команда прыгает на 128 байт вперёд от самой команды на Z80 и совместимых.
EB 3E - эта команда прыгает на 64 байта вперёд от самой команды на x86 (в любом режиме, 16/32/64).

К сожалению, команда 18 7E на x86 превращается в опасную sbb byte ptr [si/esi/rsi+xx],bh, а поэтому нам надо записать её несколько иначе.

Итоговая запись такова:

2C 18 7E 40 EB 3E

Поток выполнения для Z80 будет:
2C - INC L, то есть для восстановления регистра нам будет достаточно сделать DEC L
18 7E - JR на 0x7E (126) байт вперёд от адреса следующей команды (то есть в итоге на 128 байт)

Поток выполнения для x86 будет:
2C 18 - SUB AL, 0x18, то есть для восстановления регистра нам достаточно будет ADD AL,0x18
7E 40 - JLE на 0x40 (64) байта вперёд от адреса следующей команды (то есть в итоге на 66 байт)
EB 3E - JMP на 0x3E (62 байта, в итоге на 64) вперёд, что является тем же самым адресом, что и в предыдущей команде), эту команду мы дописываем потому, что JLE зависит от результата вычитания, а нам надо прыгнуть железно

Что мы имеем в итоге:
На Z80 этот код прыгнет по адресу +129 байт от начала кода. На x86 этот код прыгнет по адресу +68 байт от начала кода. По этим адресам мы размещаем прочие детекторы для соответствующих CPU, и вуаля :)

Естественно, для 3-4 разных процессоров задача усложняется настолько, что без цели даже пытаться подобрать последовательность лениво - надо писать собственно подборщик вариантов.

Ответить | Правка | Наверх | Cообщить модератору

99. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от anomymous (?), 08-Фев-18, 22:33 
На том же x86 ещё придётся детектить режим исполнения, по стэку детектить актуальный call convention, детектить операционку, etc, etc. Но в целом всё реально.
Ответить | Правка | Наверх | Cообщить модератору

105. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от pavlinux (ok), 09-Фев-18, 03:54 
> Но в целом всё реально.

Нед.


Ответить | Правка | Наверх | Cообщить модератору

104. "Google представил Си-библиотеку для определения возможностей..."  +/
Сообщение от pavlinux (ok), 09-Фев-18, 03:52 
>> Для всех архитектур?
> А вот кстати да, была бы тема.

Была, лет 30 назад. Ищи код тут  http://www.ioccc.org/

Ответить | Правка | К родителю #97 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру