Сдвиг влево с использованием% cl - PullRequest
0 голосов
/ 10 октября 2018

Допустим, у меня есть двоичное число.1010, что 10 в десятичном виде.

Я понимаю, что сдвиг влево на 1 бит по сути умножает число на 2.

Вот строка в учебнике, которая меня запутала.

salq %cl, %rdx

%rdx - это число, а %salq - это сдвиг влево.Что меня смущает, так это %cl.

Я читал, что CL равен 8 битам, значит ли это, что я умножаю на 2 ^ 8?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Частичный регистр cl (который на самом деле является младшими 8 битами регистра rcx) содержит значение, на которое rdx будет смещено влево.Его длина составляет восемь битов, но смещенное количество - это то, что есть на самом деле:

movb $10, %cl
salq %cl, %rdx ; rdx is shifted 10 bits left.
0 голосов
/ 10 октября 2018

CL - число смен.В С это rdx <<= cl или rdx = rdx << cl.http://felixcloutier.com/x86/SAL:SAR:SHL:SHR.html.

Или, точнее, rdx <<= (cl&63), потому что смещение масок x86 имеет значение.


Вы умножаете RDX на 2^cl.

8битовая ширина CL, означающая, что она может представлять значения от 0..255.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...