Я настійно пропоную вам переглянути свою мету, і ось чому:
Я вперше вивчив мову монтажу 6502 на мікрокомп'ютері BBC (модель B, 32K). Він мав дивовижну реалізацію BASIC, яка включала макроскладач. У нас їх було в школі, тому я писав всілякі шкідливі програми, які б робили такі речі, як пряма маніпуляція буфером екрана, щоб зробити леммінг ходити по кожному екрану, по кімнаті (вони були мережевими), якщо машини не використовували протягом 10 хвилин . Це призвело до прихисток хихикань серед моїх друзів 7 року.
Коли я придбав Commodore 64 вдома, я дізнався, що він має 6510 процесор, який також працював на 6502 мові збірки, але з цікавими додатками. Мені довелося придбати асемблер (прийшов на картридж ) і викликати програми через BASIC. Завдяки грандіозному баченню написання бестселерів, я врешті-решт створив кілька демонстраційних версій, які перетворювали на перерви апаратне відображення бітових відеозаписів, щоб зробити цікаві кольорові бар-ефекти, що оживили музику з прикольною фішкою. Вражаючий, але не такий корисний.
Потім я отримав Acorn Archimedes A310, який мав процесор ARM2, тому я використав таку ж дивовижну реалізацію BASIC із вбудованим макроскладачем, як BBC Micro (те саме спадщина). Мені вдалося зібрати пару ігор, для яких майстер-друг запропонував графіку, а також кілька демонстрацій на основі синусоїд. І те і інше було важкою роботою з програмуванням, і поганий код міг зняти машину (випадково реєструвати скидання апаратного забезпечення та ін.), Втративши все, якщо я не врятував (на дискету!).
В університеті мене познайомили з C ++ і, таким чином, C. Мені вдалося використати його для програмування Sun / Solaris та деяких інших великих комп'ютерів з мейнфреймом. Я поняття не маю, над якими архітектурними процесорами працювали ці машини - мені ніколи не потрібно було використовувати асемблер чи читати машинний код, оскільки інструменти C ++ дали мені силу, необхідну для створення професійних програм.
Після Uni я працював над Windows і кількома ароматами Unix. C і C ++ працювали на всіх цих машинах і, зрештою, Java теж зробила.
Потім я працював над Windows і Dreamcast, використовуючи C ++ з DirectX, і всеосяжний інструментальний ланцюг для налагодження.
Потім я взяв роботу, працюючи з чіпсетами на основі ARM для Smart TV (у 2000 році). Хоча мій досвід роботи з ARM2, можливо, був тут актуальним, робота була заснована на С. Я виявив, що всі роздуми над обладнанням, що я робив на Archimedes, можна також зробити в C, використовуючи прості операції з подрібненням бітів. Частина моєї ролі полягала в перенесенні кодової бази на Windows, Playstation 2, Linux, інші телевізійні та мобільні чіпсети. Усі ці платформи були доступні як з компілятором C (часто GCC), так і з деяким рівнем API для запису на базову машину - вбудований світ рідко є ядром O / S. Мені ніколи не потрібно було знати повний код машини для будь-якої конкретної платформи, окрім написання завантажувача та mini-BIOS, обидва вони вскочили в код C при першій можливій можливості (після встановлення векторів пастки,
Наступним завданням була робота з C ++, C # та JavaScript у Windows. Немає машинного коду.
Поточна робота - це робота з C ++, JavaScript, Python, LUA, HTML та іншими мовами на різних платформах. Я не маю уявлення, яким машинним кодом працюють ці платформи, і мені це не потрібно знати - компілятор переводить наш код у все, що йому потрібно. Якщо вона виходить з ладу, я виявляю помилку в налагоджувачі або за допомогою діагностики виконання (винятки, сигнали тощо).
Для розваги я розробляю додатки для iOS на маленький вільний час, який я маю вдома. Він використовує Objective-C і API, який працює в декількох наборах чіпів. Мабуть, вони базуються на зброї, але я ніколи не бачив машинного коду в своїй розробці.
Хоча це 'захоплююча вправа вивчати мову складання, зараз є набагато більш високі рівні інструментів та мов, які дозволяють бути на порядок (або два) більш продуктивними.
Кількість можливостей роботи, доступних для дивовижного програміста з мовлення / машинного коду, є незначною порівняно з тим, як JavaScript, Java, C #, C ++ або ObjC.
Я б радив вам зробити це хобі / побічним інтересом, а не основною метою.