|
2.29, Ан (??), 07:53, 08/02/2018 [^] [^^] [^^^] [ответить]
| –3 +/– |
Доступа к этой информации через WebAPI не получить.
| |
|
3.55, Аноним (-), 11:03, 08/02/2018 [^] [^^] [^^^] [ответить]
| –4 +/– |
> Доступа к этой информации через WebAPI не получить.
Насмешил. Спокойно получается id процессора, операционная система, разрешение монитора, платформа. Кстати, некоторые вещи даже без js получаются, а некоторые даже без scss.
| |
|
4.91, Аноним (-), 18:57, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
Наверно вы имели ввиду css? Ибо scss это препроцессор css, он не обрабатывается браузером вообще никак.
| |
|
|
|
1.5, Аноним (-), 23:53, 07/02/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +8 +/– |
> static bool HasXmmOsXSave()
> int GetX86FeaturesEnumValue(const X86Features* features, X86FeaturesEnum value)
На С так не пишут!
| |
|
2.23, Аноним (-), 06:21, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
#define bool int
Тоже мне, нашёл проблему.
А со второй строчкой что не так? Вполне себе C.
| |
|
3.92, dmitrmax (ok), 19:43, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
А во второй строче ключевое слово enum пропущено. Если, конечно, они не сделали typedef
| |
|
2.32, Аноним (-), 08:12, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
> На С так не пишут!
показал бы что ли свой код, чтобы мы узнали как надо писать на Си
| |
|
1.6, Не понял (?), 23:53, 07/02/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>о даёт возможность использовать её в реализациях таких функций, как malloc, memcpy и memcmp.
А зачем внутри malloc определять процессор. Ну еще какой malloc вызывать и то один раз, но внутри?
| |
|
2.66, Аноним (-), 12:30, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
Советую заглянуть в исходники той же либс - сразу станет понятно.
| |
2.102, pavlinux (ok), 03:00, 09/02/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
>>о даёт возможность использовать её в реализациях таких функций, как malloc, memcpy и memcmp.
> А зачем внутри malloc определять процессор.
Ну например не все процы умеют PDPE1GB
| |
|
1.8, Аноним (-), 00:06, 08/02/2018 [ответить] [﹢﹢﹢] [ · · · ]
| –7 +/– |
То есть,
cat /proc/cpuinfo
lshw | grep cpu
dmidecode -t 4
уже недостаточно?
| |
1.10, Дуплик (ok), 00:13, 08/02/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +8 +/– |
>Features revealed from Linux. We gather data from several sources depending on availability:
>from glibc's getauxval
>by parsing /proc/self/auxv
>by parsing /proc/cpuinfo
Ясно, понятно.
| |
|
2.27, Аноним (-), 07:49, 08/02/2018 [^] [^^] [^^^] [ответить]
| –2 +/– |
>>Features revealed from Linux. We gather data from several sources depending on availability:
>>from glibc's getauxval
>>by parsing /proc/self/auxv
>>by parsing /proc/cpuinfo
> Ясно, понятно.
что тебе ясно-понятно, там же нет qt
| |
|
3.37, пох (?), 08:33, 08/02/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
>> Ясно, понятно.
> что тебе ясно-понятно, там же нет qt
где твой пул-реквест?
| |
|
4.47, Аноним (-), 10:32, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
>>> Ясно, понятно.
>> что тебе ясно-понятно, там же нет qt
> где твой пул-реквест?
В ядро? И нафига вообще qt, если мне, например, на сервере надо псмотреть?
| |
|
5.63, пох (?), 12:24, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
> В ядро?
в ядро, наверное, не примут. Но в гугля попробовать можно - все равно они еще не знают, зачем они эту хрень придумали.
> И нафига вообще qt
ну как же - стильно, модно, молодежно, отраслевой стандарт, что-нибудь еще про "миссию гугль" вверни. Это ж каждый дурак grep по cpuinfo может, а тут - библиотека!
| |
|
4.57, Аноним (-), 11:27, 08/02/2018 [^] [^^] [^^^] [ответить]
| +2 +/– |
ещё одна сопля научилась комитить и возомнила себя линусом торвальдсом..
| |
|
|
|
1.11, nc (ok), 00:15, 08/02/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Приятная штука. Подумал что хорошо бы ее в Буст включить, но потом понял что это Си а не С++. А кстати для Си есть что-то подобное бусту?
| |
|
2.20, ERtert (?), 02:15, 08/02/2018 [^] [^^] [^^^] [ответить]
| –4 +/– |
Буст, это который сомнительная библиотека для горе-разработчиков?
| |
|
3.24, Аноним (-), 06:23, 08/02/2018 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Буст, это который сомнительная библиотека для горе-разработчиков?
Это который активно добавляют в std. Может вы ещё и std не пользуетесь?
| |
|
4.38, пох (?), 08:34, 08/02/2018 [^] [^^] [^^^] [ответить]
| –2 +/– |
>> Буст, это который сомнительная библиотека для горе-разработчиков?
> Это который активно добавляют в std. Может вы ещё и std не
> пользуетесь?
при программировании на си? Нет, не пользуется.
| |
|
|
6.71, пох (?), 13:09, 08/02/2018 [^] [^^] [^^^] [ответить] | –1 +/– | просто умею читать не на одно сообщение вверх С точки зрения программиста на C ... большой текст свёрнут, показать | |
|
|
|
3.89, Аноним (-), 17:54, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
Это кроссплатформенный велосипед большого размера. Если проект - прототип, то буст подойдет. Иначе лучше сделать свой маленький велосипед.
| |
|
4.106, пох (?), 13:34, 09/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Это кроссплатформенный велосипед большого размера. Если проект - прототип, то буст подойдет.
а при пожарном переходе от прототипа к коммерческому развертыванию, ты, конечно же, тут же переделаешь на что-то другое?
(у тебя ж именно в этот момент будет дофига свободного времени и возможностей все ломать по десять раз в день)
в общем, механику появления boost в жизни проекта ты описал правильно, но вывод сделал неверный.
Оно будет жить в проекте вечно, а через год разные его части будут требовать трех несовместимых версий одновременно.
| |
|
|
2.46, yet another anonymous (?), 10:22, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Приятная штука. Подумал что хорошо бы ее в Буст включить, но потом понял что это Си а не С++. А кстати для Си есть что-то подобное бусту?
Да, в boost'e только этого не хватает. Хотя навалено уже много.
| |
2.68, Аноним (-), 12:48, 08/02/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
> А кстати для Си есть что-то подобное бусту?
Нет. И за это мы его и любим (среди прочего).
Если вам нужен бюст, берите плюсы и не портите малину другим.
| |
|
1.13, mumu (ok), 00:48, 08/02/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +24 +/– |
> /proc/cpuinfo
Библиотека, которая выводит /proc/cpuinfo? Я аж смузи на кадиган чуть пролил.
| |
|
|
3.87, пох (?), 16:45, 08/02/2018 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Это не пользовательская библиотека, что вам непонятно-то.
нам непонятно, откуда берутся "программисты", которым нужна специальная библиотека, чтобы парсить /proc/сpuinfo. Возможно, в какой-то биолаборатории пора навести порядок, и проверить, какие именно предметные стеклышки дают лизать жабам.
| |
|
|
1.15, Аноним (-), 01:05, 08/02/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
> Си-библиотеку
Предлагаю объединить до "сиблиотеку". С остальными языками так же:
Go - гоблиотека;
Java - яблиотека.
| |
|
2.43, Ан (??), 09:44, 08/02/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
> яблиотека
что-то Apple повеяло. Лучше это слово оставить для них.
| |
|
|
|
3.35, пох (?), 08:32, 08/02/2018 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Для всех архитектур?
всех трех на которых есть /proc/cpuinfo, что-тотам в sys и команда cpuid ? Ахренеть сложная задача.
А на альфе оно работать и не будет.
| |
|
4.49, Аноним (-), 10:35, 08/02/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
>> Для всех архитектур?
> всех трех на которых есть /proc/cpuinfo, что-тотам в sys и команда cpuid
> ? Ахренеть сложная задача.
> А на альфе оно работать и не будет.
Компилировать будешь для каждого процессора и подгонять под каждый? Ну раз тебе так легко...
| |
|
5.72, пох (?), 13:19, 08/02/2018 [^] [^^] [^^^] [ответить] | +/– | А что, на си комилировать уже не надо Подгонять под каждый, разумеется, нет, эт... большой текст свёрнут, показать | |
|
4.103, pavlinux (ok), 03:49, 09/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
> А на альфе оно работать и не будет.
Альфа сдохла 18 лет назад, разобрали на запчасти и винтики.
| |
|
3.97, anomymous (?), 21:50, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Для всех архитектур?
А вот кстати да, была бы тема. Кусок машинного кода для множества архитектур который процессорозависимо джампает на нужную ветку внутри себя, соответственно знает тип процессора, и далее делает "диагностику" по возможностям такового.
Основная проблема написания подобной штуки - надо подобрать команды переходов так, чтобы они джампали на определённом проце, а все "чужие" команды переходов на других процах выполнялись, как какая-нибудь обратимая хрень.
| |
|
4.98, anomymous (?), 22:29, 08/02/2018 [^] [^^] [^^^] [ответить]
| +3 +/– |
Дабы понимать, о чём я, простой пример
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 разных процессоров задача усложняется настолько, что без цели даже пытаться подобрать последовательность лениво - надо писать собственно подборщик вариантов.
| |
|
5.99, anomymous (?), 22:33, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
На том же x86 ещё придётся детектить режим исполнения, по стэку детектить актуальный call convention, детектить операционку, etc, etc. Но в целом всё реально.
| |
|
|
|
2.28, Аноним (-), 07:51, 08/02/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Почему не на ASM? хипстота очередная!
ASM для хипстеров! Настоящие программисты пишут в двоичном коде!
| |
|
3.65, КО (?), 12:27, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
Эх молодежь, уже и не помнит как программировать проводками. :)
| |
|
|
1.18, gg (??), 01:48, 08/02/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
я бы тоже не отказался получать больше $100к в гугле, что бы писать такую откровенно скажем хрень
| |
|
2.31, Аноним (-), 08:05, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
эээ... так кто тебе мешает то? у нас что, железный занавес? Перестань комплексовать уже от своих нищенских доходов - слезами горю не поможешь.
| |
|
3.34, Аноним (-), 08:29, 08/02/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
> эээ... так кто тебе мешает то? у нас что, железный занавес?
железный занавес уже много лет как не у нас, а у них.
Уехать работать в гугль, умея только "библиотеку для определения возможностей cpu" у него не получится.
> Перестань
> комплексовать уже от своих нищенских доходов - слезами горю не поможешь.
если ты не понял, он не о доходах, а о том, какую херню эти люди делают.
| |
|
|
5.50, Аноним (-), 10:36, 08/02/2018 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Зависть неосилянта
Свои проекты ф студию. Только профы не забудь.
| |
|
|
|
2.33, Аноним (-), 08:25, 08/02/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
> я бы тоже не отказался получать больше $100к в гугле,
> что бы писать такую откровенно скажем хрень
большая часть гугля тем и занимается, что делает всякую откровенную хрень. Уже лет десять как. Иногда сложную хрень, иногда вот такую.
Проблема только в том, что на самом деле им вешали лапшу на уши, что они - избранные, и будут улучшать мир. Те, кто эту лапшу принял всерьез - свалили, им неинтересно парсить proc. Те кто изначально на #@ю вертел - в пролете, не прошли интервью, "надо верить!" или хотя бы очень умело делать вид.
Угадай, какие остались?
Если ты можешь пройти все уровни интервью в гугле - я уверен, ты можешь найти себе нормальную работу.
https://geektimes.ru/company/dataart/blog/268274/ - вот тебе интервью с инсайдером. "успешным", кому нужны лузеры.
| |
|
3.51, Аноним (-), 10:40, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
> вот тебе интервью с инсайдером.
> "успешным", кому нужны лузеры.
Что такое для тебя успех? Для меня заниматься тем, что я хочу, а не тем, где больше платят или вася пупкин сказал это круто работать в гугеле\M$\аппл или где ещё там.
| |
|
4.93, _ (??), 20:40, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
... ниЧЧо, и ты когда то женишься и ребетёнков заведёшь :-)
| |
|
|
2.88, Аноним (-), 17:18, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
$100k в Сан-Франциско — это как жить на 8к рублей в Москве. А удалённые кодеры Гуглу не нужны, в Bay Area под мостом отличные кадры бомжуют, можно даже не думать о том, чтобы нанять опеннетчика из Мордора.
| |
|
3.90, Аноним_ (?), 18:37, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
бомжа в гей-ареа нанимать дорого, наймут бангалорского. Через год переедет туда - для них-то нет проблем с квотами h1b.
| |
3.94, _ (??), 20:51, 08/02/2018 [^] [^^] [^^^] [ответить]
| –1 +/– |
>$100k в Сан-Франциско — это как жить на 8к рублей в Москве.
Бре-е-е-е-хня-я-я! (С)
Но с чего ты вдруг решило что тебе этот стольник дадут? Они умные ребята о отлично понимают твою ситуацию ==> будут доить так что 8-о
| |
|
|
1.42, iZEN (ok), 09:25, 08/02/2018 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
У меня когнитивный диссонанс: если программа, написанная на C/C++, откомпилирована и работает на [i386], то она точно не запустится на [arm64] без специальных ухищрений, поскольку это "шитый машиный код" и от переносимого в исходных кодах Си в бинарнике ровным счётом ничего не осталось (если не включены отладочные символы и другая неоптимизация, но в релизе от этого избавляются). А что уж там проверять - есть ли SSE/3DNow! или нет на [arm64] - это вторичная глупость.
ЧТО они запихнули в свою CpuInfo, что она может на лету определять архитектуру процессора и его фичи, мультизагрузчик, компилятор и генератор тестового машкода под кучу процессоров для выполнения в реальном времени что ли?
| |
|
2.44, Аноним (-), 09:59, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
оно не для переносимости бинарников на разных семействах, а внутри одного. например amd64. так что бы без пересборки бинарника можно было заюзать как все новейшие плюшки sse9999, так и на атлоне 10-летней давности запустить.
| |
|
3.52, iZEN (ok), 10:42, 08/02/2018 [^] [^^] [^^^] [ответить]
| –1 +/– |
> так что бы без пересборки бинарника можно было заюзать как все новейшие плюшки sse9999
Так все новейшие плюшки, так и общий код в бинарнике включаются ещё на этапе компиляции компилятором опциями компиляции исходного текста на C/C++. Зачем ещё что-то довыяснять на этапе выполнения специальным кодом, если компилятор сам уже ДОБАВИЛ эту возможность в бинарик? Используйте современные версии компиляторов, чтобы не нужно было определять фичи CPU, на котором выполняется код.
| |
|
4.56, Аноним (-), 11:12, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
Тогда этот бинарник перестанет запускаться на древнем Атлоне. А с помощью библиотеки можно сделать, чтобы работал везде и использовал максиму фич имеющегося процессора.
| |
|
5.62, iZEN (ok), 12:16, 08/02/2018 [^] [^^] [^^^] [ответить]
| –2 +/– |
В любом случае вы не сможете запустить бинарник для [amd64] на [i386] без добавления 32-битного кода, дублирующего основной. А вот код для [i386] вполне можно запустить на [amd64] при условии присутствия поддержки выполнеия этого кода. И довыяснять в нём о том, что он на самом деле запускается в 64-битном окружении, не имеет смысла без соответствующей возможности генерации 64-битных частей и передачи им управления.
Хорошо, запустили 32-битный код для древнего Athlo'а XP на 64-битном Athlon X2 и узнали об этом во время выполнения. Ваши дальнейшие действия? Что дальше?
| |
|
6.70, КО (?), 13:07, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Ваши дальнейшие действия? Что дальше?
Ты начни с начала.
Есть у тебя программа пускач и плюгины к ней.
Плюгин №1 считает на чистом FPU, два на SSE, три на AVX-512.
Задача пускача узнать какой загружать. Надо все их проверить на пригодность здесь и сейчас.
Ну или ты пишешь jit компилятор для своего скриптового языка.
И т.д. и т.п.
| |
|
7.76, iZEN (ok), 13:24, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Задача пускача узнать какой загружать. Надо все их проверить на пригодность здесь и сейчас.
Это задача компилятора - вставить в результирующий бинарный код, оптимизирующие инструкции из расширенного набора. Если они поддерживаются процессором, использовать их, в противном случае будет задействован код, работающий с базовым набором регистров.
| |
|
8.79, Аноним (-), 13:33, 08/02/2018 [^] [^^] [^^^] [ответить] | +/– | Обычно компилятор не способен оптимизировать код лучше, чем грамотный разработ... текст свёрнут, показать | |
|
9.82, iZEN (ok), 14:41, 08/02/2018 [^] [^^] [^^^] [ответить] | +/– | Современные компиляторы способны выдавать лучше оптимизированный код, чем средни... текст свёрнут, показать | |
|
8.107, КО (?), 15:13, 09/02/2018 [^] [^^] [^^^] [ответить] | +/– | Проверять перед каждой инструкцией есть или нет в рантайме убивать идею овчинка... текст свёрнут, показать | |
|
|
|
|
4.77, Аноним (-), 13:26, 08/02/2018 [^] [^^] [^^^] [ответить] | +/– | Компилятор, в общем случае, сам ничего не добавляет Если ты в коде явно заюзал,... большой текст свёрнут, показать | |
|
|
2.75, Аноним (-), 13:23, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
Д-е-б-и-л. Изучи код libc поуниверсальнее, которая умеет оптимизироваться под разные архитектуры (glibc пойдёт). В зависимости от доступных фич процессора она может обрабатывать стринги по старинке, может задействовать MMX, а может SSE. Можно скомпилировать, оставив только одну подпрограмму, а можно, чтобы таскала их все и выбирала в рантайме.
| |
|
3.86, пох (?), 16:40, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
он, похоже, даже не в курсе, что процессоры различаются не только битностью.
куда ему там, glibc...
ну и "компилятор генерит код лучше чем разработчик" - видимо, он прочитал в какой-то книжке начала 90х, времен хайпа риск-процессоров. Сегодня, чтобы компилятор сгенерил таки sse/ssse/avx код, надо ТАКУЮ хрень написать в исходнике, что глаза на лоб лезут. "зато переносимо". Ага, если не думать о том, КАК оно работает если компилятору таки не удалось опознать в этой вермишели свертываемость в sse инструкции, или на этой платформе оно устроено немного иначе.
| |
|
|
1.45, X4asd (ok), 10:16, 08/02/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
> не генерируются исключения
исключения?
в Си?
фуф! пронесло.. не генерируются :-D :-D :-D
| |
|
2.74, пох (?), 13:22, 08/02/2018 [^] [^^] [^^^] [ответить]
| –1 +/– |
>> Код написан в соответствии со спецификацией С89, что позволяет
>> охватить большинство современных и устаревших компиляторов.
> Неа.
>> We target gnu89 and not c89.
ффсе нормально, это gcc версий чуть поновее 2.7.2 и clang (если ключик не забыть) = "большинство", что не так?
| |
|
|
2.84, Аноним (-), 15:12, 08/02/2018 [^] [^^] [^^^] [ответить]
| +2 +/– |
Ты б ещё на эльбрусе запустил, выдало бы ERR_TRANSISTORS_NOT_FOUND.
| |
|
|
4.95, _ (??), 21:04, 08/02/2018 [^] [^^] [^^^] [ответить]
| +/– |
О! How-much-watch-и пожаловали :-)
попробуй "... but you stay strong!" глядишь на второй год не оставят :-)))
| |
|
|
|
|