Как начать изучать сборку - PullRequest
17 голосов
/ 20 июля 2009

Я бы хотел поиграть с написанием какой-нибудь сборки на моем Mac, в идеале родной, но я бы понял, легче ли учиться в QEMU или как-то еще.

Я вижу, что существуют разные диалекты ассемблера в зависимости от процессора - какой диалект лучше всего изучать?

У меня нет ни малейшего представления о том, с чего начать, какие-либо указания относительно того, как даже запустить программу в ассемблере?

Ответы [ 5 ]

16 голосов
/ 20 июля 2009

Мое предложение - поработать с лучшим производителем ассемблера: gcc.

Писать простые программы на C, а затем компилировать их с ключом -S.Вы получите файл.s, содержащий код ассемблера.Повозись с этим и ты научишься.Самое приятное то, что если вы хотите изучить другой ассемблер, вы можете просто скомпилировать gcc как кросс-компилятор и создать ассемблер для любой поддерживаемой платформы.

Не забудьте отключить оптимизацию с помощью -O0, в противном случае вы можете найти странноетрюки.

Это привет мир на ассемблере

    .cstring
LC0:
    .ascii "hello world!\0"
    .text
.globl _main
_main:
    pushl   %ebp
    movl    %esp, %ebp
    pushl   %ebx
    subl    $20, %esp
    call    L3
"L00000000001$pb":
L3:
    popl    %ebx
    leal    LC0-"L00000000001$pb"(%ebx), %eax
    movl    %eax, (%esp)
    call    L_puts$stub
    movl    $0, %eax
    addl    $20, %esp
    popl    %ebx
    leave
    ret
    .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5
L_puts$stub:
    .indirect_symbol _puts
    hlt ; hlt ; hlt ; hlt ; hlt
    .subsections_via_symbols
2 голосов
/ 20 июля 2009

Несколько (хорошо, много) лет назад я взял книгу Питера Нортона по сборке http://www.amazon.com/Assembly-Language-Primer-Personal-Computer/dp/0136619010. Это был фантастический способ начать программирование на компьютере. Интересно, можете ли вы все еще получить это и использовать DOSbox для работы через него?

1 голос
/ 20 июля 2009

Ну, хотя это не то, что некоторые люди называют «лучшей» сборкой, я бы порекомендовал изучить X86 / X86-64, так как он наиболее широко используется. Чтобы запустить программу, вы можете просто использовать GCC, чтобы перевести ее в двоичный файл, а затем запустить ее через консоль.

0 голосов
/ 20 июля 2009

Присоединяйтесь к сообществам, которые процветают в ассемблерном коде. Первое, что приходит на ум, - это демосцена. Например, ознакомьтесь с продукцией , выпущенной для компьютеров Mac x86, на pouet.net . Попробуйте связаться с некоторыми из кодировщиков в активных группах. Некоторые из них могут захотеть поделиться идеями и кодом и, возможно, даже мотивировать вас написать свои собственные.

Вот так я начал работать в тот день, но на 8-битном Atari.

0 голосов
/ 20 июля 2009

Я выучил MIPS и протестировал в SPIM на уроке «организация компьютера».

Не уверен, что эта книга сработает, но, возможно, стоит попробовать. Мы использовали «книгу» (больше похожую на учебник, а на самом деле чит-лист), написанную профессором, поэтому в противном случае она недоступна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...