LINUX.ORG.RU

машинные инструкции процессора Intel коде на Assembler

 


0

1

здрасьте здрасьте люди добрые

помогите пожалуйста разобраться в устройстве машинных команд. Я очень верю, что тут есть люди, которые в этом разбираются и у них найдется минутка

section .text
.global main
main:

.byte 0b01001000, 0b11000111, 0b11000000, 0b00000001 


позмаыслу должно было в mov $1, %rax

но не работает. что делаю неправильно? система Linux x86_64 процессор интел

порядок байтов не перепутал?

anonymous
()
Ответ на: комментарий от i-rinat

спасибо огромное

помогите пожалуйста разобраться....

префикс команды я указал, он по-моему мнению самый первый слева

также я указал байткод команды в котором три последних бита 111 говорят мне о том, что размер операнда будет слово, а в моем случае это 64бит(это единица) а также говорят о том что регистр будет в качестве приемника(это единица)

и посткод в котором mod=11 что говорит о том будет регистровая адресация, но один из операндов непосредственный поле reg значит не используется, а поле m\reg будет использоваться только как регистр. там последними в поле m\reg 000 -это rax регистр

и последний байт команды содержит сам непосредственный операнд ==1b

что неправильно я сделал? что упустил? зачем еще лишнии байты ?

объясните пожалуйста

Assembler
() автор топика
Ответ на: комментарий от i-rinat

размер операнда я могу указать как в коде операции так и в префиксе, так и байте кода операции, так и в байте способа адресации. указание в префиксе, считается основным, но можно и в перечисленных.

если w=1, то значит операнд равен слову. так как у меня процессор 64битный, а слово, это то что процессо обрабатывает за один такт, а это 64бита, то слово равно 64битам. и если размер операнда это слово, то значит размер ==64бита.

можно мыслить иначе, и допустить что слово это два байта.

Често сказать я путаюсь. Поэтому и попросил помочь.

скажите пожалуйста, где в действительности устанавливается размер операнда? из прочитанного сложно понять. Так как документация старается запутать злоумышленников. Ее цель сделать так чтобы читающий мало что понял. Правду знает лишь узкий круг людей. Поэтому я зашел на форум в раздел разработчиков.

объясните пожалуйста какой бит в каком байте, за что отвечает

Assembler
() автор топика
Ответ на: комментарий от sf

спасибо огромное.

понимание сразу не придет. буду пытаться разобраться в этом по-немногу.

Assembler
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.