Всё проще: надо поднять красную линию до уровня конца желтой (там, где написано "старт готового решения"), и там, где красная и зелёная линия пересекутся - будет точка выбора: если она выше требуемого функционала, надо брать готовое, а если ниже - писать своё.
Но такая диаграмма получится слишком простой...
brainick: Но ведь первые 3 или 3 с половиной пункта у "человека, далёкого от этой темы" вполне могут быть. Пусть они дают 2 года в разбросе "2-4 года". Получается, что оставшиеся два года занимают пункты 4 и 5?
Консольные проекты - очень удобная штука. Особенно, когда нет ввода, а параметры берутся из командной строки. Хотя гибридные варианты (если параметров нет - то спрашивать) ещё лучше.
а AT&T - для всех процессоров, существующих в природе.
Интересный факт, буду иметь в виду.
Любопытно, что они сделают с командой | [B0] ADD .S1 A5:A4,B6,A9:A8
- с условным выполнением и явным указанием вычислительного модуля, да ещё и выполняющуюся одновременно с предыдущей.
Олег Цилюрик: Но исходный вопрос был - не про "просто так", а для "глубокого понимания архитектуры железа". Собственно, передо мной сейчас тоже стоит такой вопрос - надо ли изучить список команд и регистров, а также устройство памяти ARM, чтобы программа на C# работала на этом процессоре эффективнее. Похоже, что надо (после того, как я учту те эффекты, которые получил опытным путём - вроде того, что вещественное деление там быстрее целочисленного).
Олег Цилюрик: Неделя. Звучит вполне разумно (если нужно научиться писать с нуля целые файлы с директивами - а не переделывать их из готовых шаблонов) (чтобы избежать лишнего вопроса - макровозможностями ассемблера я тоже не пользовался). Но что вам даст ответ на вопрос "в какой нотации вы предпочли бы изучать этот ассемблер?" Разумный, как мне кажется, ответ - "в той, в которой компилятор выдаёт листинги, понимает ассемблерные вставки и позволяет включать файлы на ассемблере". Впрочем, если ассемблер AT&T совершенно невозможен для понимания, то стоило бы начать с Intel... но похоже, что это не тот случай. Так что - какая разница? К чему был задан вопрос?
Олег Цилюрик: Если мне понадобится глубокое понимание китайской культуры, то, возможно, изучение китайского языка будет полезным. Даже если я не планирую на нём говорить.
Олег Цилюрик: Верно, в той нотации, где регистры через %, я ничего не писал - не было необходимости. Поэтому и спрашиваю. Но почему-то мне кажется, что переключиться с записи операнда 2(SP) на [%6+1] (для условного процессора и нотаций) проблемы быть не должно. Если различается порядок операндов, это хуже, но и к этому можно привыкнуть - приходилось сталкиваться с разными вариантами.
Олег Цилюрик: Очевидно, что для понимания архитектуры конкретного процессора надо изучать ассемблер именно этого процессора. Возможно, начать можно с базового набора команд, но знать о существовании расширений и зачем они нужны, тоже нужно. Большого смысла изучать ассемблер TI C66xx для понимания архитектуры AMD64, наверное, нет.
Насчёт нотации - не очень понятно. В разных нотациях разное распределение битов по регистрам? Или разное разбиение кода на инструкции? То, что инструкции и регистры называются по-разному, помешает переключиться с одной на другую, но вряд ли повлияет на понимание архитектуры.
eugenebartosh: А, под "дуализмом" вы имеете в виду большое число положительных корней. Да, это проблема, особенно, если корни близкие. Остаётся надеяться на то, что у многочленов, полученных из разных троек, все корни, кроме одного, будут достаточно сильно различаться. И тогда поиск глобального минимума суммы квадратов сработает. А будет ли достаточно устойчиво решение через систему уравнений - не уверен: там не используется важная информация о том, что компоненты решения - степени одного и того же z^2. По хорошему, там надо брать ещё больше троек, и искать вектор методом наименьших квадратов (поиск оптимального решения переопределённой несовместной системы).
eugenebartosh: Сначала уточним. Z у вас - расстояние от некоторой точки (одной конкретной из тех трёх, для которых строилась система) до камеры. Верно ли, что когда вы строите разные полиномы, то во всех случаях это одна и та же точка, т.е. вы выбираете какую-то точку A и берёте 5 из 6 возможных троек (A,X,Y), где X,Y - это какие-то две точки из оставшихся четырёх?
"Дуализм решения" вряд ли проявляется. Но я бы эту задачу продолжил решать так:
- у нас уже есть 6 полиномов 4-й степени от u=z^2. Найдём сумму S(u) их квадратов - это будет какой-то полином степени 8. Скорее всего, корней у него не будет, но есть хороший шанс, что правильному значению z будет соответствовать его глобальный минимум в области u > 0. Можно, на всякий случай, посчитать такие же полиномы для остальных точек, и выбрать ту, у которой минимум меньше. Минимум искать сначала перебором u с мелким шагом, а потом уточнить методом Ньютона для уравнения S'(u)=0.
И обязательно попробуйте нарисовать графики всех 6 полиномов для тестового примера! Возможно, станет понятнее, что там происходит в действительности.
hudrogen: Как ни странно, это функциональный анализ. Правда, в упрощённом, конечномерном случае. Близко лежат ряды Фурье и линейная алгебра (разложение вектора по базису). Совсем общее название - аппроксимация, а как она называется в частном случае линейного разложения по базисным функциям, даже не знаю.
hudrogen: Возьмите b*sin(X+c), раскройте по формуле синуса суммы, посмотрите на получившиеся уравнения... и не забудьте о существовании функции atan2. В общем, чистая математика, к IT отношения не имеет.
Используем С# для своего 3D-сканера. И для управления, и для приёма данных, и для обработки. Как на десктопе, так и на борту (под windows XP и под Linux). Пока очень довольны.
Но такая диаграмма получится слишком простой...