Pull to refresh

Comments 14

Каждый раз задумываюсь «бэкап» или «бекап», ну зачем в языке с целом фонетическим письмом было делать так? Я не говорю уже про «кэшбек» )

Я после статьи о японском языке, согласен просто запомнить как слова исключения.:)

Про стек можно еще много чего рассказать.
Бывает expand down стек на i386, прикольная штука — «стек наоборот».
Про выравнивание данных на стеке можно упомянуть, когда это надо и зачем.
Про особенности стека при прерываниях и исключениях процессора.
Да и команд еще куча есть для работы со стеком, например pusha/popa.
Почему в x86 push sp сначала работал одним образом, а потом стал другим нарушив совместимость.
ну и т.д.

Да, вы абсолютно правы, в статье нет упоминания про expand up стек, про то, как ведёт себя стек при каких-либо исключениях процессора и много чего ещё, к сожалению

Изначально казалось, что статья будет необоснованно большой, если начать писать про все команды, влияющие на поведение стека, такие как pusha/popa, pushad/popad, pushf/popf и многие другие, а также при расписывании всех EFLAGS, которые могут быть затронуты при операциях на стеке, хотя про совместимость инструкций push sp я однозначно дополню статью, остальные замечания, лучше, думаю, будет описать во второй части статьи, т.к., действительно, я о многом не рассказал, что касается стека i386, в данной статье.

Спасибо за замечание!

Ошибочка в коде

pushl %ebp

pushl %esp, %ebp

Надо

pushl %ebp
movl %esp, %ebp

Спасибо за замечание, поправил

Как видно из Рисунка 1, при помещении чего-либо на стек, он увеличивается вниз.

Это не видно из рисунка. На рисунке не обозначены адреса.

"и записывает записывает помещаемое значение" - очепятка

Спасибо за статью.

Было бы здорово увидеть итоговый, полный код файла args.s , например на GitHub. Человек со стороны как я, на простой "запятой" сможет споткнуться и ничего не получить.

И было бы особенно полезным посмотреть на исполнения из gdb, состояние стека, регистров или т.п.

Да, соглашусь насчёт того, что стоило бы показать исполнение прогаммы из gdb или другого дебагера, подумаю над дополнением статьи

А ссылка на исходный код указана в заключении под номером 9, на всякий случай продублирую здесь

Исходный код на GitHub с небольшими изменениями - https://github.com/d0wnFvll/x86-asm-argv/blob/main/args.S

ну а если можно помечтать :) Здорово бы было пошире посмотреть, от простейшего C кода, до gdb. Ближе к жизни как бы. ASM конечно хорошо, но мало где его "видно"

UFO landed and left these words here
Sign up to leave a comment.

Articles