Но ведь это не то. Одно дело, когда у тебя физ. устройство, а другое, когда ты всё это эмулируешь
Я согласен если мы говорим про Arduino например но в данном случае я даже не представляю что можно и для каких нужд брать 6502 и что то с ним делать
Устройство какое-нибудь сделать. Учить же не только ради написания игры
Так я и говорю - тогда уже лучше Ардуино брать, если просто хотелка именно 6502 поковырять, то да
Хочется с нуля начинать. Что бы понять всё устройство. Я то вообще не знаком с МК (только маленькое представление имею, что да как)
Хочется железного
Да, я знаю, что 6502 - не МК
можно и фасм заточить под эту архитектуру/семейство
Это как если не секрет?
Прикольно, не знал что такое возможно. Назрел кстати вопрос - на чем пишут ассемблеры?
на чем угодно, это простая программа
Я наверное не правильно задал вопрос, тут наверное в целом про языки программирования и про компилятор - что делают чтобы дать понять языку как взаимодействовать с процессором, памятью и т.п. когда его создают?
На хабре была статья про это
ничего, язык напрямую не связан с процессором, просто проц выполняет то что щагрудено в память. если загружена команда обнуление регистра - проц жто слелает, загрудена команды пересылки данных из рнгистра в память - он жто сделает
В принципе там нет никакой магии. Половину работы делает ядро, а программа лишь говорит, что делать, и как. И говорит она это - на языке, который генерирует компилятор
Я так понимаю что древние компы понимали только 0 и 1, а как их научили понимать регистры, строки и т.п.?
Кстати приятно познакомиться👍🏻
Как научили процессор понимать эти команды? Где это заложено?
это не их научили понимать, а они "заставили" людей называть человеческими именами некоторые свои абстракции
Это углубление в устройство ЭВМ. И снова это уже оооочень углубленно расписано в гугле
Я понимаю как все идет сверху вниз - высокоуровневый язык программирования интерпретируется или компилируется до 1 и 0, но как например писались первые языки высокого уровня или того же ассемблера если не было ничего кроме 0 и 1, так и писали 0000001000001011111100 ?
Я наверное плохо гуглил =\
Писали мнемониками
Наверное. Потому что я когда интересовался - даже нашёл статью про написание своего "компьютера" с нуля
Так и писали. Точнее даже не писали, а щёлкали тумблерами!
0000001000001011111100 этот набор бит превратили в человекочитаемуб команду например mov. и вот когда программа-ассемблер (транслятор) видит в тсходном коде слово mov, он вставляет(копирует, создает) именно тот набор бит который подращумевается под этой командой ( 0000001000001011111100)
Процессор понимает лишь 0/1 (есть сигнал/нет сигнала). К примеру команда 1011 0001 0000 1000 — выглядит так себе, а вот тоже самое но в шестнадцатиричном B108 — уже проще воспринимается человеком, но ещё проще воспринимается mov cl, 8 — это уже мнемоника и быть она может какой тебе захочется: movb $0x8, %cl; mov cl, 8; ld cl, 8; или ещё как, это уже зависит от конкретного ассемблера. Поэтому и развелось всяких TASM, MASM, FASM... Но все они собирают один и тот же машинный код. И когда ты пишешь на ассемблере mov ebx, eax, то ты даже не задумываешься что на самом деле ты написал: 1000 1011 1101 1000.
Все, теперь немного прояснилось. Но как научили допустим что 1011 0001 0000 1000 значит mov cl, 8 ?
Это скорее разработчики научили программиста. Они так собрали. Программист следует правилам сборки.
Обсуждают сегодня