Подтвердить что ты не робот

Как начать изучение сборки

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

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

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

4b9b3361

Ответ 1

Мое предложение - действовать с лучшим производителем ассемблера: 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

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

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