С чего начать изучение ассемблера?

Мне нужно изучить ассемблер, используя инструкции SSE, и мне нужен gcc, чтобы связать код ASM с кодом c.

Не знаю с чего начать и гугл не помог.


person John Jiang    schedule 06.10.2009    source источник


Ответы (4)


Вы можете начать просматривать документацию по чипам из руководств разработчиков программного обеспечения для процессоров Intel. Кодирование на языке ассемблера не доставляет особого удовольствия и обычно не требуется, за исключением нескольких случаев, когда код критичен к производительности.

Учитывая, что вы смотрите на SSE, я бы рискнул, что ваши усилия могут быть лучше потрачены на изучение CUDA, используя вашу видеокарту для выполнения векторных вычислений с помощью пользовательских шейдеров. Таким образом, вам не нужно изучать ASM, и если вы занимаетесь серьезной обработкой чисел, это может быть значительно быстрее, если у вас есть хорошее распараллеливание.

person Spence    schedule 06.10.2009
comment
Это зависит от случая. Довольно часто при анализе изображений загрузка и загрузка на/с видеокарты происходит медленнее, чем сам расчет на x86. Хороший случай для CUDA, например. кодеки, которые загружаются в сжатом формате, выполняют относительно тяжелые вычисления, и результирующий поток изображений никогда не должен снова возвращаться в основную память, а направляется на видеовыход. - person Marco van de Voort; 08.12.2009
comment
Старая добрая проверка и измерение... Не зная применения, я просто давал ему понять, что есть несколько способов содрать шкуру с кошки. Однако я бы подумал, что шина PCIx 16 будет иметь серьезную пропускную способность на шине памяти. Я знаю, что суперкомпьютерные узлы Tesla были разработаны с учетом этого, 64-канальная система PCI Express с 4 процессорами cuda в системе. - person Spence; 10.12.2009
comment
CUDA является проприетарным, поэтому имеет ограниченное использование. - person asdf; 17.06.2011
comment
Вы думаете, что Windows и Linux не учитывают аппаратное обеспечение, на котором вы работаете, потому что оно проприетарное? Если @jila6395 рассматривает возможность кодирования ASM, то абстракции не годятся. Чтобы сделать ASM, вам придется посмотреть, используете ли вы Intel или AMD, потому что существуют уникальные инструкции, а ассемблерный код может иметь разные тайминги и поведение кеша. То же самое и с CUDA: вам нужно знать, на какой платформе вы работаете, чтобы писать код, чтобы он был более эффективным. - person Spence; 19.06.2011

Это хороший форум для начала работы; это форма MASM, но люди там смогут помочь с тем, что вам нужно.

person Noon Silk    schedule 06.10.2009

У них есть книга по сборке для чайников? Без сарказма они обычно дают хорошие пошаговые интро на простых примерах.

person Zak    schedule 06.10.2009

Если у вас много времени, я рекомендую вам The Art of Assembly Language, классическую книгу для самообучения от Рэндалла Хайда. Он использует язык, похожий на ASM, чтобы научить вас делать ассемблер. Возможно, для уже подготовленных специалистов это звучит как пустая трата времени, но начать учиться — это неплохо.

person Manuel Abeledo    schedule 06.10.2009