Комментарии 24
Замечательная игрушка. С реальным ассемблером практически не работал, но играю с удовольствием. Здорово сделан запуск игры и завершение — загрузка TIS-100 и отключение соответственно.
Радует и кросплатформенность. Кроме Steam, можно приобрести на GOG DRM-free версию (сейчас скидка, обойдётся в 159р).
Радует и кросплатформенность. Кроме Steam, можно приобрести на GOG DRM-free версию (сейчас скидка, обойдётся в 159р).
+2
НЛО прилетело и опубликовало эту надпись здесь
А как потратить меньше циклов в тестовом задании? Там же нельзя за раз сразу два числа читать?
0
сразу нет, но данные приходят постоянно и их можно роутить на разные блоки для параллельных вычислений.
Например, у нас сверху идут числа :1,2,3,4
А в принимающем блоке код вроде:
mov up left
mov up right
то число 1 уйдет налево а 2 направо, 3 — снова налево и так далее.
Например, у нас сверху идут числа :1,2,3,4
А в принимающем блоке код вроде:
mov up left
mov up right
то число 1 уйдет налево а 2 направо, 3 — снова налево и так далее.
0
А ядра синхронные? То есть, если написать
mov up, left
mov up, down
А дальше снова объединить потоки данных, они придут синхронно?
mov up, left
mov up, down
А дальше снова объединить потоки данных, они придут синхронно?
0
Это от многого зависит: числа блоков, которые проходят данные, числа выполняемых над ними операций, синхронизацией между блоками. Вроде как любая инструкция выполняется один такт.
То есть, если вы из одного блока разделяете поток данных на два, затем каждый из двух выполняет одну и ту же операцию и затем потоки объединяются в том же порядке — то да, придут синхронно. Если нет — надо ставить для синхронизации NOP или ещё что-то придумывать.
То есть, если вы из одного блока разделяете поток данных на два, затем каждый из двух выполняет одну и ту же операцию и затем потоки объединяются в том же порядке — то да, придут синхронно. Если нет — надо ставить для синхронизации NOP или ещё что-то придумывать.
0
Все ядра одновременно выполняют очередную команду, на которой находится курсор (у каждого процессора курсор может быть в своей, отличной от всех других процессоров, строке) и затем перемещают курсор на следующую строку, если сама команда не подразумевает перехода (JMP). Если команда последняя в блоке — курсор перескакивает на первую строку. Если команда подразумевает чтение данных из любого порта (верхнего, нижнего, левого, правого), то курсор остаётся на команде чтения пока чтение не станет возможно, то есть пока соответствующий соседний процессор не запишет что-то в порт.
В данном случае, пробрасывая в цикле сначала налево, затем направо, мы добьёмся того, что у нас с отставанием на один такт будут удваиваться числа. Сначала по левой цепочке ядер, затем по правой. И если цепочки одинаковой длины, то и к выходу они будут приходить сначала из левой цепочки, потом из правой. И, если я правильно понял ваш вопрос, то ответ — да, порядок входных данных и соответствующих результатов будет сохранён, а скорость обработки увеличится.
В данном случае, пробрасывая в цикле сначала налево, затем направо, мы добьёмся того, что у нас с отставанием на один такт будут удваиваться числа. Сначала по левой цепочке ядер, затем по правой. И если цепочки одинаковой длины, то и к выходу они будут приходить сначала из левой цепочки, потом из правой. И, если я правильно понял ваш вопрос, то ответ — да, порядок входных данных и соответствующих результатов будет сохранён, а скорость обработки увеличится.
+2
А есть еще подобные игры?
0
НЛО прилетело и опубликовало эту надпись здесь
Просто посмотрите все игры этого парня (http://www.zachtronics.com)
Spacechem только одна из них, есть еще из интересных Infinifactory, Codex (тоже на алгоритмизацию) и Kohctpyktop (там нужно полупроводниковые схемы делать)
Spacechem только одна из них, есть еще из интересных Infinifactory, Codex (тоже на алгоритмизацию) и Kohctpyktop (там нужно полупроводниковые схемы делать)
+1
Есть, IBM BlueGene называется. Только там хардкорнее: сетка трёхмерная и противоположные грани замкнуты. И до кучи, вместо одной системы передачи сообщений сделано три: в соседние ячейки, fat tree и широковещательная сигнальная. Ну и каждая ячейка — это 4х ядерный процессор, поэтому в ней можно распараллелиться более эффективно.
0
Есть еще Lightbot, Lightbot-2.
+1
Ctrl+Y в редакторе не работает, а зря :)
+1
Вообще, очень долго не мог привыкнуть писать в команде MOV в качестве параметров ЧТО, КУДА. Руки упорно набирали в обратном порядке. Тяжкое наследие TASM.
+1
Надо же, угадал создателя игры по скриншоту.
0
www.tis100pad.com
Полезный gist для сохранения результатов.
Полезный gist для сохранения результатов.
+1
Отличная игра. С удовольствием потратил на неё четверть выходных.
Теперь хочется поработать с настоящим ассемблером на многоядерной машине.
Теперь хочется поработать с настоящим ассемблером на многоядерной машине.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
TIS-100 — паззл про многопоточный ассемблер, который никто не ждал