D
Как сделать, чтоб Си нормально брал первое число и последнее число?
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(Если что, я про HEX число - первое и последнее)
cdq
shr edx, 28
add eax, edx
and eax, 15
sub eax, edx
int getlast(int num) {
return (num % 0x10);
}
int getfirst(int num) {
while((num /= 0x10) > 0x10) { }
return num;
}