Как начать изучение сборки
Я хотел бы сыграть с написанием сборки на своем Mac, в идеале родной, но я бы понял, легче ли учиться в QEMU или что-то в этом роде.
Я вижу, что в зависимости от процессора есть разные диалекты сборки - какой диалект является "лучшим" для изучения?
На самом деле я понятия не имею, с чего начать, какие-либо указания относительно того, как даже запустить программу в сборке?
Ответы
Ответ 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.