diff --git a/02-cpu-commnads/README.md b/02-cpu-commnads/README.md index 701f547..c24df14 100644 --- a/02-cpu-commnads/README.md +++ b/02-cpu-commnads/README.md @@ -74,11 +74,29 @@ NOTE: По какой-то причине это не указано в руководстве Intel, но по крайней мере если верить сайту, который я использовал для ассемблирования инструкций, то нужно обязательно учитыать префиксы к опкоду прежде чем начинать кодировать (опять же все по опыту): -1. `0x67` - ставится если команда **адресуется** при помощи 32-битных регистров -2. `0x66` - ставится, если программа иссользует хотя бы 1 16-битный регистр +1. `0x66` - ставится, если программа иссользует хотя бы 1 16-битный регистр +2. `0x67` - ставится если команда **адресуется** при помощи 32-битных регистров Благо для 8-битных операций другие опкоды и хотя бы на них не надо префиксы запоминать) +## Примеры переводов + + + +## Решение остальных пунктов + +*В целом в этом репозитории лежат файлы, в которых я приложил пока еще не протестированное, но решение для первых нескольких пунктов. Однако в силу того, что память у нас 64-битная, а также я не могу залеть напрямую в видеопамять если не буду собирать модуль ядра. Возможно конечно от нечего делать я сделаю модуль ядра, который позволит выворачивать такие приколы, но это будет точно не на время этого курса.* + +### 01 - простучать команды ассемблеру + +Тут нечего сказать - есть просто колонка с коммандами и просят их использовать. Тут гугл в помощь. + +А вот по поводу полей в команде могу сразу сказать - в 64 битном процессоре все это будет выглядеть немного иначе. Поэтому предлагаю 16-битные регистры заменить в команде на 64 битные и закодировать как для 64 разрядной системы. подробная инструкция как это бы надо бы сделать у меня приведена выше, поэтому тут не буду на этом останаваливаться. + +### 02 - Пересылка массива при помощи loop и lea + +`lea` - это сокращение от "load effective adress". Она использует использует классическую операцию обращения к памяти, но саму память не затрагивает, а просто записывает высчитанный адрес в переменную +