Нужна книга и предложение веб-сайта для продвинутого программирования низкого уровня - PullRequest
5 голосов
/ 25 февраля 2010

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

Изучай продвинутый c / c ++ Оптимизировать мой код с встроенной сборкой и без нее Понимать внутренности exe, dll, thread, process Эффективно используйте такие технологии, как SSE, 3DNow, MMX Отладка и дизассемблирование исполняемых файлов / библиотек и понимание того, что происходит внутри Отличия / особенности разных процессоров / платформ, таких как x86, MIPS, ARM, PowerPC Моя первая цель - система на базе Windows x86. После этого идут платформы на основе Linux. И встраиваемые системы следуют. Любые книги, веб-сайты, учебные пособия, форумы, сообщества, которые дают мне то, что я ищу, ПРЯМО. Спасибо ..

Ответы [ 5 ]

1 голос
/ 25 февраля 2010

Может быть, пришло время для вас завести аккаунт на http://my.safaribooksonline.com/,, отключите телефон на пару недель, загрузите холодильник Jolt и Funyuns, попрощайтесь с семьей и друзьями, а затем прочитайте как можно больше книги как можно. Там есть довольно обширная библиотека, которая охватывает большинство тем, которые вы ищете.

1 голос
/ 25 февраля 2010

Несколько рекомендаций из числа моих любимых для начала:

  • «Эффективный C ++: 55 конкретных способов улучшить ваши программы и разработки (3-е издание)» - Скотт Мейерс

  • «Внутри машины» - Джон Стоукс

  • «Восторг Хакера» - Генри С. Уоррен

  • «Руководство по оптимизации программного обеспечения» - Ричард Гербер

  • «Руководство разработчика программного обеспечения для архитектуры Intel® 64 и IA-32, том 2A: ссылка на набор инструкций, A-M» (253666-021)

  • «Руководство разработчика программного обеспечения для архитектуры Intel® 64 и IA-32, том 2B: ссылка на набор инструкций, N-Z» (253667-021)

1 голос
/ 25 февраля 2010

То, что вы просите, не может быть найдено ни в одной книге. Многое из того, что вы упомянули, лучше всего найти в руководствах пользователя или функциональных спецификациях для различных процессоров. Я рекомендую начать с понимания основной арки x86 и оттуда работать дальше. Хорошим началом может стать одно из старых руководств Intel 386 или 486.

Я не знаю сайтов для такого типа информации.

0 голосов
/ 25 февраля 2010

Я всегда находил Компьютерные системы: Перспектива программиста (http://www.amazon.com/Computer-Systems-Programmers-Randal-Bryant/dp/013034074X)) очень хорошей книгой. В ней содержится большой объем информации об компьютерной архитектуре, и он научил меня управлению памятью, компиляции и компоновке (а также как отлаживать ошибки компоновки), оптимизацию, перемещаемый объектный код и некоторые элементы архитектуры более низкого уровня, например, как изучать информатику с низкого уровня (например, каковы внутренние компоненты процессора). Есть много хороших упражнений, начиная от примеров оптимизации до реализации переполнения буфера. Здесь обсуждается, как писать встроенный код сборки (и заставить его работать). Есть даже раздел о написании кода для вымышленного (Y86) процессора.

Однако одно предостережение заключается в том, что он имеет тенденцию уделять большое внимание процессорной линейке Intel (на мой взгляд). Если вы хотите что-то, что немного больше похоже на работу с, скажем, ARM-линией, то вы, вероятно, захотите воспользоваться рекомендациями других выше.

0 голосов
/ 25 февраля 2010

это слишком много, что вы хотите изучить. :)

Я бы предложил начать с базовой архитектуры ядра ARM v4. это достаточно просто понять. затем перейдите к 8086, затем соберите более поздние версии ARM и x86. ARM имеет тип RISC. и x86 типа CISC. Вы никогда не сможете изучить все процессоры. (как будто вы никогда не сможете выучить все языки программирования) но знание 1 или 2 может дать возможность понять любую другую, с которой вы столкнетесь. нет ничего особенного в объектно-ориентированном программировании. поэтому не имеет значения, используете ли вы c ++ или c. получите симулятор полной системы, такой как gxemul или qemu. попробуйте выполнить программу сборки hello world - (без использования библиотек времени исполнения процессора, - вам это нужно сложно, верно?) другие могут помочь вам в отношении SSE, MMX и т. д.

Оформление заказа infocenter.arm.com для спецификаций языка сборки и архитектуры ARM.

...