ASCII к дополнению 2 в агрегате

Я работаю над реализацией функции, которая преобразует строку цифр в ASCII в соответствующее 64-разрядное 2-х-дополнительное значение.

Регистр, подобный %rdi, будет содержать аргумент char *s, который является адресом первого байта преобразуемой строки

Строка будет null-terminated. Регистр, подобный %rsi, будет содержать аргумент long *x, который является адресом, где вы разместите результат преобразования.

Я даже не знаю, с чего начать. Как преобразовать ASCII в дополнение 2? I’ve been looking and I found out I should take advantage of 0x0F, how can I use it? С чего начать?

1 ответ

  1. Чтобы преобразовать символ ASCII в дополнение 2, вам нужно ANDчисло ASCII 0x0F.
    Например: Вы читаете символ ASCII 7в %rsi. Регистр %rdiдержится 0x0F.

    7 эквивалентно: 0011 0111.

    0x0F эквивалентно: 0000 1111.

    Результат ANDing два вместе приводит к: 0000 0111который находится 7в двоичном формате.

    Надеюсь это помогло!