Guldan
тоесть эт типа команда mov из х86?
И я бы хотел научится с ними работать
Aiwan \ (•◡•) / _bot
Систему команд в микропроцессоре
https://web.archive.org/web/20111030052912/http://www.computer-museum.ru/technlgy/i8080.php пока нашел только это. только это 8080. но я так понимаю что cpu580 это его аналог
Aiwan \ (•◡•) / _bot
­
Не-а.
Glo
нет. обычный. даже хуже.
­
Был Толей, стал Тоней?
Anonymous
Ага, пол поменял
Киану
Что посоветуете по gnu asm почитать? 1-2 книги
Guldan
Ужасный, хуже быть не может
xor eax, eax
Что мне почитать про инструкции в x86_64. Я не собираюсь писать свой собственный дизассемблер, но хотел бы иметь представление о MOD-REG-R/M
Дамир
Что мне почитать про инструкции в x86_64. Я не собираюсь писать свой собственный дизассемблер, но хотел бы иметь представление о MOD-REG-R/M
Инструкции под x64. Они те же, что и x86, по моейму с незначительным изменениями. Единственно там регистры изменены. Например EAX -> RAX и так далее. https://wiki.osdev.org/CPU_Registers_x86-64
Дамир
Как мне сканить опкоды, искать длину инструкции и прочее?
https://wasm.in/threads/principy-kodirovanija-instrukcij-intel-x86-64-ili-exal-prefiks-cherez-prefiks.34390/
Aiwan \ (•◡•) / _bot
Как мне сканить опкоды, искать длину инструкции и прочее?
да можешь прям в коде сам же код и распечатать вывести через printf тотже в hex.
Aiwan \ (•◡•) / _bot
по типу lbl1: movsx rax,dword[mem] mov ebx,$-lbl1 ; это будет длина а потом копируешь массив по метке lbl1 длиной ebx куда нить и выводишь в hex. но эт если хочешь поиграться, можно и замакросить. но обычно для этих целей есть отладчик, там сами опкоды инстукций видно
s54820
по типу lbl1: movsx rax,dword[mem] mov ebx,$-lbl1 ; это будет длина а потом копируешь массив по метке lbl1 длиной ebx куда нить и выводишь в hex. но эт если хочешь поиграться, можно и замакросить. но обычно для этих целей есть отладчик, там сами опкоды инстукций видно
Ему скорее всего дизассемблер длин нужен. На вход последовательность байтов, на выходе последовательность длин инструкций. И вот тут уже нужно вручную парсить префиксы, модрм/сиб и бегать по нескольким таблицам опкодов. Ну или использовать тот медленный трюк с инструкцией на границе страницы и отловом исключений при декодировании.
Aiwan \ (•◡•) / _bot
ну тогда еще фасм можно предложить. но тут будет опять дискуссия о невнятном вопросе.
Алина
Привет, я хочу поболтать.
Харитон
У меня прога по блок схеме не работает что нужно сделать чтобы она работала
Харитон
Харитон
У меня просто код не по блок схеме
Aiwan \ (•◡•) / _bot
нет
Aiwan \ (•◡•) / _bot
У меня просто код не по блок схеме
это как? ты говориш сначало "прога по блок схеме". а потом "код не по блок схеме". какой ответ и какую помощь в этом случае ты ожидаешь?
Харитон
Я толко начинаю язык изучать, я хочу написать код по блок схеме для меня это проблема
Харитон
А тот код который я отправил не правильный
usernameak
напиши правильный
Aiwan \ (•◡•) / _bot
неправильный, у тя в секции данных даже нет A и В, я дальше не стал смотреть
Aiwan \ (•◡•) / _bot
Харитон
Условный переход
Aiwan \ (•◡•) / _bot
Условный переход
я не про тему, а про материал - книги, сайты, статьи, видео, методичка студенческая. что ты используешь для обучения когда говоришь "начинаю его изучать"?
Харитон
Проше говоря мне выдают методические материалы
Харитон
По которым я учусь
Aiwan \ (•◡•) / _bot
Ask
мне вот все интересно, я например асм начинал изучать когда знал только бейсик и паскаль. и кроме книжки по асму ничего небыло. и почему то такие вопросы никому не задавал и ковырял сам по обрывкам инфы которую можно было достать в то время ибо тупо стремно было показаться чайником. а сейчас в сети можно найти всю необходимую инфу с примерами и задают такие вопросы.. ппц.. похоже правду говорят что интернет отупляет... з.ы. неудержался🤪
Aiwan \ (•◡•) / _bot
в интернете не учат пользоваться интернетом просто
Ask
имхо это тупо лень и нежелание учиться и понимать. типа нафига мне надо чтото читать, вникать, лучше спрошу, пусчай другие напрягаются чтоб мне ответит.
Aiwan \ (•◡•) / _bot
ну тогда начни с определения А и В в секции данных
Ask
На асеме выразить
где у тебя в коде хотябы пееменные А Б? где сравнение где сложение и вычитание
Aiwan \ (•◡•) / _bot
На асеме выразить
ну что, получилось?
Харитон
нет
Харитон
может книгу какую нибуть посоветуешь
Aiwan \ (•◡•) / _bot
может книгу какую нибуть посоветуешь
да, поиск в чате хештегу book
Aiwan \ (•◡•) / _bot
ищи что касается masm
Харитон
спасибо
Mark
Всем приветики :3
Aiwan \ (•◡•) / _bot
Mark
еще 1 бот
Естественно.
Aiwan \ (•◡•) / _bot
ну рассказывай, что случилось?
Mark
ну рассказывай, что случилось?
Да ничего вроде. Я просто недавно в телегу закатился, вот и искал чаты по своей тематике. До этого сидел только в дискорде.
Mark
Пишу под x86-64 на fasm. Хочу в ближайшее время эмигрировать на ARMv*.
Aiwan \ (•◡•) / _bot
Пишу под x86-64 на fasm. Хочу в ближайшее время эмигрировать на ARMv*.
ну так продолжай писать на фасме. есть fasmarm и fasmg
Mark
ну так продолжай писать на фасме. есть fasmarm и fasmg
Я разве задавал вопрос? ) Просто не могу найти время, чтобы взяться нормально и перейти на ARM. Про FasmARM знаю, хотя и компилировать можно только с x86, а за FasmG спасибо, почитаю.
k_voistinov
Доброго дня. Можете объяснить задумку компилятора, когда вместо sub - для аллоцирования стека, он написал and rsp, -32: push rbp mov rbp, rsp and rsp, -32 mov WORD PTR [rsp-32], 1 .... здесь череда мувов значений массива на стек ( всего 16 WORD'ов)
Aiwan \ (•◡•) / _bot
тебе на пальцах или как?
k_voistinov
легко, эт у тя скорей всего masm, он так делает
gcc c -Og лучше намекнуть где капать. Побитку понимаю, но тут видно все зависит от адреса rsp, а точнее его выравнивания?
Aiwan \ (•◡•) / _bot
а сек, попутал, извини. думал почему ты спрашиваешь про sub вместо add. а там вообще and
Aiwan \ (•◡•) / _bot
а так да, он стек выравнивает по 32х байтной границе
k_voistinov
а так да, он стек выравнивает по 32х байтной границе
походу именно так и происходит. Потому что поигравшись со значениями rsp, обнаружил что какое то доп место используется. А не много ли? по 32 байтной границе выравнивать?
Aiwan \ (•◡•) / _bot
16 вордов это и есть 32 байта. получается сначало выравнивает, пушит rbp, потом вторым and снова выравнивает и пушит уже 32 байта из вордов. похоже на подготовку работы с sse, там для использования многих инструкций данные должны быть выровнены, получается что на границу в 32 байта
Aiwan \ (•◡•) / _bot
там есть испольщование sse с этими данными?
Eugene
Для SSE 16 байт достаточно, для AVX как раз 32. А если будет AVX-512, там будет 64, наверное, вообще :) Вообще, у винды, к примеру, выравнивание по 16 байтам в соглашении о вызовах прописано в x64.
Aiwan \ (•◡•) / _bot
вопрос. такова тупая работа компиля. "я это воткну, а там пригодится или нет меня не инетресует, памяти и так много"
k_voistinov
вопрос. такова тупая работа компиля. "я это воткну, а там пригодится или нет меня не инетресует, памяти и так много"
компилятор то особо не виноват, флаг то -Og стоял, при -O3 он сразу поместил этот локальный массив (32 байта) в .LC0 секцию, а потом broadcast'ит из памяти в ymm регистр.
k_voistinov
По ходу кто-то не включил оптимизацию
меня именно момент с and интересовал. Вот теперь знаю и про выравнивание для avx.
Aiwan \ (•◡•) / _bot
можно и не выравнивать. вроде есть аналогичные инструкции, не требующие выравнивания, но и работать они будут чуть дольше
Киану
Посоветуйте плз что почитать по x86 асму