Size: a a a

Ассемблер

2020 August 30

К

Канат in Ассемблер
Aleksandr
_ft_strcmp: xor rax, rax
           xor rcx, rcx

compaire:  

           mov al, byte[rdi + rcx] ;всего два обращения к памяти
           mov ah, byte[rsi + rcx] ;всего два обращения к памяти
           test al, al ;test немного быстрее cmp, а с нулем отлично сравнивает
           je done
     test ah, ah ;test немного быстрее cmp, а с нулем отлично сравнивает
           je done
           cmp al, ah
           jne done
           inc rcx
           jmp compaire

done:      
           sub al, ah;то же, что и было, но без использования второго регистра
     movzx rax, al
           ret
Ого
источник

К

Канат in Ассемблер
А что делает movzx
источник

A

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

A

Aleksandr in Ассемблер
а, и тогда можео убрать xor rax,rax в начале
источник

К

Канат in Ассемблер
Ясно спасибо
источник

A

Aleksandr in Ассемблер
а еще ты не сохраняешь регистры. это не обязательно делать, но нужно помнить об этом
источник

К

Канат in Ассемблер
А где мне их сохранять? В самом начале?
источник

A

Aleksandr in Ассемблер
ну, смотри. ты используешь в коде ECX, и после этой процедуры данные в нем изменятся
источник

A

Aleksandr in Ассемблер
когда ты вызываешь эту процедуру снаружи - тебе нужно учитывать что данные в ECX будут потеряны и сохранить их перед вызовом. или переписать функцию и сохранять ECX в стеке
источник

A

Aleksandr in Ассемблер
собственно, оба варианта равнозначны
источник
2020 August 31

E

Erbe in Ассемблер
Здравствуйте, подскажите пожалуйста, есть пример text db "Hello World", 10  Автор говорит, что 10 это всегда значение новой строки, получается если я буду использовать в коде какой-то текст в кавычках мне нужно будет всегда прописывать 10 либо же это не так? И что тогда означает 10
источник

RS

Rusty Shackleford in Ассемблер
Erbe
Здравствуйте, подскажите пожалуйста, есть пример text db "Hello World", 10  Автор говорит, что 10 это всегда значение новой строки, получается если я буду использовать в коде какой-то текст в кавычках мне нужно будет всегда прописывать 10 либо же это не так? И что тогда означает 10
10 это десятичный аскии код байта обозначающего возврат коретки
источник

E

Erbe in Ассемблер
Rusty Shackleford
10 это десятичный аскии код байта обозначающего возврат коретки
Спасибо большое, еще нашел пример 0xa, 0xd это аналогичное?
источник

RS

Rusty Shackleford in Ассемблер
Erbe
Спасибо большое, еще нашел пример 0xa, 0xd это аналогичное?
прошу прощения, 10 это NL код - нью лайн
источник

RS

Rusty Shackleford in Ассемблер
Erbe
Спасибо большое, еще нашел пример 0xa, 0xd это аналогичное?
http://www.asciitable.com/ вот можете посмотреть сами, там понятно всё
источник

E

Erbe in Ассемблер
Спасибо! Аски код можно использовать любой? Я имею ввиду любые числа, которые доступны?
источник

RS

Rusty Shackleford in Ассемблер
Erbe
Спасибо большое, еще нашел пример 0xa, 0xd это аналогичное?
0xa 0xd это тоже новая строка, просто в некоторых системах новая строка обозначается не 1 символом nl  а двумя, nl cr ( новая строка и возврат каретки) в макось так например, сетевых протоколах прикладного уровня тоже так
источник

RS

Rusty Shackleford in Ассемблер
Erbe
Спасибо! Аски код можно использовать любой? Я имею ввиду любые числа, которые доступны?
да, есть еще таблица юникодов, тоже можете загуглить, если к примеру нужны китайские иероглифы или русские буквы, то их нет в аски но применяются юникоды
источник

E

Erbe in Ассемблер
Rusty Shackleford
0xa 0xd это тоже новая строка, просто в некоторых системах новая строка обозначается не 1 символом nl  а двумя, nl cr ( новая строка и возврат каретки) в макось так например, сетевых протоколах прикладного уровня тоже так
Немного не понятно как же следовать мировым стандартам, но думаю со временем разберусь использовать 0xa 0xd либо же nl rc :D
источник

E

Erbe in Ассемблер
Rusty Shackleford
да, есть еще таблица юникодов, тоже можете загуглить, если к примеру нужны китайские иероглифы или русские буквы, то их нет в аски но применяются юникоды
уже добавил в закладки, потихоньку буду учиться добавлять это все и комбинировать
источник