Size: a a a

Беседка Perl-групп

2021 August 06

AK

Andrey Konovalov in Беседка Perl-групп
Если исходно пишешь на чём-то, близком к процу. Да и непонятно, чем можно заменить bsf в том же чистом Crystal, кроме тупо сдвигов вправо
источник

AP

Anton Petrusevich in Беседка Perl-групп
я так понимаю, это и была цель демонстрации. но си заметно полезнее, однако
источник

AP

Anton Petrusevich in Беседка Perl-групп
я в курсе, о том и гутарю :)
источник

AK

Andrey Konovalov in Беседка Perl-групп
Тут просто надо смотреть, что является альтернативой. Компиляция отдельной .so для такого и связывание с ней - немного странный подход. А если делать силами самого Crystal, будет работать раз в 10 хуже/медленнеее
источник

AP

Anton Petrusevich in Беседка Perl-групп
я на перле даже не припарился бы с инлайн-си, если б нужно было. неужто у кристала нет инлайн-си?
источник

AP

Anton Petrusevich in Беседка Perl-групп
источник

AK

Andrey Konovalov in Беседка Perl-групп
Не-а. Асмовский инлайн тоже по сути "неофициальный", но поскольку все кому не лень читают исходники компилятора - уже только ленивый не знает,  что есть этим асм-вставки.
источник

AK

Andrey Konovalov in Беседка Perl-групп
Тут просто ещё задача специфическая:
нужно в коде на Си как-то объяснить, что ты в в итоге хочешь получить аналог bsf. Как это сделать - хороший вопрос, поскольку ничего лучше самой инструкции с таким именем я лично не знаю для intel
источник

AK

Andrey Konovalov in Беседка Perl-групп
Т.е.. тогда надо компилировать код в асм-листинг и проверять, а вставил ли он туда bsf
источник

AP

Anton Petrusevich in Беседка Perl-групп
твой bsf, это по сути
__builtin_ctz(x): This function is used to count the trailing zeros of the given integer. Note : ctz = count trailing zeros.
Example: Count no of zeros from last to first occurrence of one(set bit).
источник

p

pragus in Беседка Perl-групп
интринсики
источник

VG

Vadim Goncharov in Беседка Perl-групп
ну а если ты работаешь в окружении без компилятора?
источник

AK

Andrey Konovalov in Беседка Perl-групп
Ну, тут тогда и Crystal упадёт, как я понимаю, он использует внешний компилятор для вставок
источник

AK

Andrey Konovalov in Беседка Perl-групп
Ммм… Бибилотеку LLVM-овскую
источник

AK

Andrey Konovalov in Беседка Perl-групп
Интересно, что внутри, потому что asm же никто не отменял
источник

AP

Anton Petrusevich in Беседка Perl-групп
в общем, дело твоё, но ассемблером с современными процессорами и компиляторами я бы не пользовался и избегал их.
источник

AK

Andrey Konovalov in Беседка Perl-групп
Тьфу, короче асм-вставки в Си могут быть и в коде gcc
источник

AP

Anton Petrusevich in Беседка Perl-групп
тут дело в том, что компилятор на себя берёт реализацию инструкции под нужный проц
источник

VG

Vadim Goncharov in Беседка Perl-групп
да какая разница
источник

AK

Andrey Konovalov in Беседка Perl-групп
Так если внутри билтина - просто асм-вставки и макро-переключатель между архитектурами, то зачем мне это? Ну пусть там есть вставка под арм, я её могу просто себе скопировать и юзать, проверяя if flag?(:arm)
источник