Всем привет.
Я начал учить Ассемблер.
Очень трудно воспринимается и у меня возник такой вопрос, на который еще никто не ответил.
Зачем регистры нужны?
Это как переменные?
Если переменные - то это их имена?
А зачем их несколько? Rax, rbx, rcx?
Это типа как int, char, double?
Самый главный вопрос здесь - я не пойму как они действуют.
К примеру я написал такой код:
format ELF64
public _start
new_line equ 0xA
msg db "WTF, Dude", new_line, 0
len = $-msg
_start:
mov eax, 4
mov rbx, 1
mov rcx, msg
mov rax, len
int 0x80
call exit
exit:
mov rdx, 1
mov rbx, 0
int 0x80
Мне выбивает "Ошибка сегментирования".
Как вы поняли регистры? Я вот например из-за ошибки сегментирования не могу понять как её исправить, потому что я не знаю как работают регистры и что они значат.
Изначально код был правильный, но я поменял там имена регистров что бы потренироваться.
Вообщем очень туго мне с ассемблером, пожалуйста, обьясните что это и как это работает и где это выучить что бы мне было понятно зачем я пишу эти регистры и что в них помещать??????