169 похожих чатов

@Disba1ancer @laurson Как сделать, чтоб Си нормально брал первое число

и последнее число?
getfirst(int):
mov eax, 0x20000001
.L4:
mov edx, eax
lea eax, [eax+15]
test edx, edx
cmovns eax, edx
sar eax, 4
cmp edx, 271
jg .L4
ret
Выходит намного медленнее, чем:
mov eax, 0x20000001

@@:
cmp eax, 0x10
jb @f
shr eax, 4
jmp @b
@@:

Получение последнего числа нормально сделал, через маску:
and eax, 0xF:
mov eax, 0x2000001
cdq
shr edx, 28
add eax, edx
and eax, 15
sub eax, edx
(Если что, я про HEX число - первое и последнее)

int getlast(int num) {
return (num % 0x10);
}

int getfirst(int num) {
while((num /= 0x10) > 0x10) { }
return num;
}

10 ответов

8 просмотров

Bit scan точно медленнее, чем твои циклы?

Entusiast- Автор вопроса
s54820
Bit scan точно медленнее, чем твои циклы?

Да, проверял всеми способами

Entusiast- Автор вопроса
s54820
Bit scan точно медленнее, чем твои циклы?

Ну при маленьких значениях типа 0x20 - конечно цикл медленнее

Во втором асмолистинге ошибка тебе нужен sar

Entusiast- Автор вопроса
disba1ancer
Во втором асмолистинге ошибка тебе нужен sar

Проверял с любыми случайными значениями - нет никакой ошибки, работает

Entusiast- Автор вопроса
disba1ancer
А отрицательные значения там были?

Да 0xF0001 0xE02 0xFFFFFF1 0x82918 0xFEFEFE 0xF0F0F0 Результат был: 0xF 0xE 0xF 0x8 0xF 0xF

Entusiast
Да 0xF0001 0xE02 0xFFFFFF1 0x82918 0xFEFEFE 0xF0F...

Тогда в сишном коде не используй инты или кастуй к беззнаковым, у тебя первый листинг, явно что-то шаманит со знаком

Entusiast- Автор вопроса
disba1ancer
Тогда в сишном коде не используй инты или кастуй к...

Спасибо, тоже вот только что думал добавлять unsigned

Entusiast
Спасибо, тоже вот только что думал добавлять unsig...

Ты можешь делать каст внутри функции

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
вот что получается в интерпрететоре, работает и результаты выгляд разумными, но то как выглядит код мне не нравиться, а понять куда двигаться не очень могу, если кому не лень ...
Fedor
42
Карта сайта