Pull to refresh

Comments 11

Всегда поражало - как люди из ничего могут выдумать целую статью...

Нормальная учебная статья - для тех, кто ещё не в теме и хочет понять. У Петцольда в "Code" примерно такой же уровень разворачивания разъяснений, или местами ещё подробнее. А оно как раз считается отличной книгой для старшего школьного возраста. Часто вопросы надо обжевать с 2-3 сторон, чтобы достичь понимания >95% аудитории.

Другой вопрос, что в статье никак не сказано, что всё это для x86-64 - это можно увидеть только в URL оригинала или в предыдущей статье. Уже для ARM будут существенные отличия, а для MIPS, RISC-V и прочих, которые вполне могут попасться сейчас ассемблерщику, всё совсем не так (тех же флагов условий нет, сравнение идёт на двух регистрах или на регистре и константе). Ну и порядок статей странноватый, условия без объяснения перед этим, что в регистрах и памяти и почему...

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

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

Это продолжение цикла статей. В первой части автор указывал, что это под x86-64. А также, что это кодировка от intel. Мне бы вот интересней бы было почитать что нибудь по сложнее, например про работу с ассемблером АРМ-намного шире и сложнее, чем под x86-64. Всетаки под x86-64 ассемблер если не самый понятный и простой, то один из точно!

В первой части автор указывал, что это под x86-64. А также, что это кодировка от intel.

Я так и сказал в своём комментарии :)

Мне бы вот интересней бы было почитать что нибудь по сложнее, например про работу с ассемблером АРМ-намного шире и сложнее, чем под x86-64. Всетаки под x86-64 ассемблер если не самый понятный и простой, то один из точно!

Статей про ARM (оба, AArch32 и AArch64) полно, и на русском я находил достаточно, хотя на английском на порядки больше.

Что x86 (32, 64) проще и понятнее - я бы как раз не сказал. Даже на чисто прикладном уровне много проблем с неортогональностью или странной логикой команд. Где-то привязанные регистры - деление, так *AX и *DX, сдвиги, так *CX. Никому не нужная RCL, которую тянут через все разрядности. В 64 битах: где-то непосредственные константы в 4 байта, где-то в 8. В одной команде нельзя использовать AH и SIL/DIL/R8B/etc. Флаги ставятся иногда по безумной логике. Много таких примеров. ARM по сравнению с этим практически прямолинеен и логичен. А если идти в системное программирование, так ARM ещё в разы проще...

Держите, под 4 архитектуры и немного ссылок там же для информации.

Может стоило упомянуть про чудесный CMOV?
Просто чтобы у новичков было представление, что в каких-то случаях ветвление можно реализовать и без нарушения линейности исполнения.

Да, у ARM-а это выглядит более богато, в том смысле что их можно применить не только к MOV-ам. А сами то суффиксы и в x86 есть, просто применяются только к CMOV.
Но я в основном имел в виду саму идею аппаратной реализации условного выполнения инструкции, без использования jump-ов.

Недавно случайно узнал, что в микроконтроллерах avr есть команда "проверить условие, и если истина, то пропустить следующую команду". А что? Длина машинной команды фиксированная (4 байте в семействе mega, если не ошибаюсь), так что довольно просто сделать PC+4.

Sign up to leave a comment.