>>1063028 Лол, будто знание этих языков что-то совершенно непостижимое и мистическое, что я должен каждому доказывать что я действительно знаю их. Во-первых, на с и с++ я пишу уже более 10 лет и зарабатываю этим. Во-вторых, я очень часто дизассемблирую свой код, для того чтобы убедиться что компилятор все правильно делает и генирирует правильный ассемблер. Да и на ассемблере я изредка по приколу пишу, вот недавно писал мандельброта на AVX/FMA3 пикрил. Кстати вышло очень даже неплохая скорость, выдавал на моем i5 4670k 60+ фпс при 1024x1024.
>>1063034 >Таненбаум. Не знаю, что-то полистал оглавление его книги и мне она показалась для совсем новичков, мне бы что-нибудь более практическое с примерами типа как загрузиться, как там MMU программировать и всякие такие низкоуровневые штуки с железом.
>>1063034 >портировать компилятор Нахуя мне портировать компилятор, я же не новую процессорную архитектуру буду изобретать, а x86 совместимую ОС. Да и со стандартной библиотекой это тоже ты загнул, думаю она даже не потребуется. Т.к я не собираюсь писать какую-то серьезную ОС чтобы составить конкуренцию линуксу или что-то такое, мне это интересно в качестве самообразовательных целей.
>>1063026 (OP) >>1063066 Ты не по адресу, тебе нужно например к этим деятелям http://board.kolibrios.org/ посмотри исходники этой питухОС, я уверен там есть все, что тебе нужно - загрузка, низкоуровневый анал-карнавал с любым железом и т.д.
>>1063066 > как там MMU программировать и всякие такие низкоуровневые штуки с железом. Не трать время. Все равно не осилишь. На дворе далеко не 1990г. когда комплюхтер был простой и можно было самому спаять.
>>1063066 > x86 совместимую ОС Пффф. Вот тут-то все ответы мне и показались верными. А то я зашёл тебе посоветовать в качестве ниши RTOS для ARM (альтернативу FreeRTOS или лучше RIOT-OS), но иди тогда ты нахуй.
В качестве дополнения к советам выше очень рекомендую посмотреть исходники bolgenOS для лучшего понимания как писать осы профессионально, со всеми новейшими лучшими практиками и учетом ошибок популярных осей типа линукса или винды.
>>1065871 Так RTOS отличает только по идее цпу шедулер и остальные функции памяти, процесса, стека и т.п для уменьшения латенси. Как я уже писал я хочу написать свою ОС, чтоб познать дзен, это следующая ступень в моем мастерстве программирования. Компилятор я уже писал, 3Д двиган делал в студенческие годы. Хай лод сервера писал на работе. Алгоритмы уже все выдрочены и написаны свои версии по 5 раз. Думаю теперь пришло время валить рейд босса - написать свою ОС. На ARM писать не могу ибо у меня нету ARM нигде кроме USB модема, да и архитектуру арм не знаю, в отличии от х86. Тем более архитектурные особенности это всего лишь нижний слой абстракции, основной то слой где работает само ядро с шедулерами, менеджерами памяти и т.п. находиться выше архитектуры CPU.
>>1063066 >Да и со стандартной библиотекой это тоже ты загнул, думаю она даже не потребуется Ты заебешься без неё писать, хотя бы частичная реализация нужна.
>>1063026 (OP) Вот полноценная ОС на Сишке #define G(n) int n(int t, int q, int d) #define X(p,t,s) (p>=t&&p<(t+s)&&(p-(t)&1023)<(s&1023)) #define U(m) ((signed char )(m)) #define F if(!--q){ #define I(s) (int)main-(int)s #define P(s,c,k) for(h=0; h>>14==0; h+=129)Y(16c+h/1024+Y(V+36))&128>>(h&7)?U(s+(h&15367))=k:k
G (B) { Z; F D = E (Y (V), C = E (Y (V), Y (t + 4) + 3, 4, 0), 2, 0); Y (t + 12) = Y (t + 20) = i; Y (t + 24) = 1; Y (t + 28) = t; Y (t + 16) = 442890; Y (t + 28) = d = E (Y (V), s = D 8 + 1664, 1, 0); for (p = 0; j < s; j++, p++) U (d + j) = i == D | j < p ? p--, 0 : (n = U (C + 512 + i++)) < ' ' ? p |= n 56 - 497, 0 : n; }
n = Y (Y (t + 4)) & 1; F U (Y (t + 28) + 1536) |= 62 & -n; M U (d + D) = X (D, Y (t + 12) + 26628, 412162) ? X (D, Y (t + 12) + 27653, 410112) ? 31 : 0 : U (d + D); for (; j < 12800; j += 8) P (d + 27653 + Y (t + 12) + ' ' (j & ~511) + j % 512, U (Y (t + 28) + j / 8 + 64 Y (t + 20)), 0); }
F if (n) { D = Y (t + 28); if (d - 10) U (++Y (t + 24) + D + 1535) = d; else { for (i = D; i < D + 1600; i++) U (i) = U (i + 64); Y (t + 24) = 1; E (Y (V), i - 127, 3, 0); } } else Y (t + 20) += ((d >> 4) ^ (d >> 5)) - 3; } }
G (_); G (o); G (main) { Z, k = K; if (!t) { Y (V) = V + 208 - (I (_)); L (209, 223) L (168, 0) L (212, 244) _((int) &s, 3, 0); for (; 1;) R n = Y (V - 12); if (C & ' ') { k++; k %= 3; if (k < 2) { Y (j) -= p; Y (j) += p += U (&D) (1 - k 1025); if (k) goto y; } else { for (C = V - 20; !i && D & 1 && n && (X (p, Y (n + 12), Y (n + 16)) ? j = n + 12, Y (C + 8) = Y (n + 8), Y (n + 8) = Y (V - 12), Y (V - 12) = n, 0 : n); C = n, n = Y (n + 8)); i = D & 1; j &= -i; } } else if (128 & ~D) { E (Y (n), n, 3, U (V + D % 64 + 131) ^ 32); n = Y (V - 12); y:C = 1 << 24; M U (C + D) = 125; o (n, 0, C); P (C + p - 8196, 88, 0); M U (Y (0x11028) + D) = U (C + D); } } }
G (o) { Z; if (t) { C = Y (t + 12); j = Y (t + 16); o (Y (t + 8), 0, d); M U (d + D) = X (D, C, j) ? X (D, C + 1025, j - 2050) ? X (D, C + 2050, j - 3075) ? X (D, C + 2050, j - 4100) ? X (D, C + 4100, ((j & 1023) + 18424)) ? 176 : 24 : 20 : 28 : 0 : U (d + D); for (n = Y (t + 4); U (i + n); i++) P (d + Y (t + 12) + 5126 + i 8, U (n + i), 31); E (Y (t), t, 2, d); } }
G (_) { Z = Y (V + 24); F Y (V - 16) += t; D = Y (V - 16) - t; }
F for (i = 124; i < 135; i++) D = D << 3 | Y (t + i) & 7; }
if (q > 0) { for (; n = U (D + i); i++) if (n - U (t + i)) { D += _(D, 2, 0) + 1023 & ~511; i = ~0; } F if (Y (D)) { n = _(164, 1, 0); Y (n + 8) = Y (V - 12); Y (V - 12) = n; Y (n + 4) = i = n + 64; for (; j < 96; j++) Y (i + j) = Y (t + j); i = D + 512; j = i + Y (i + 32); for (; Y (j + 12) != Y (i + 24); j += 40); E (Y (n) = Y (j + 16) + i, n, 1, 0); } } }
С чего начать?
Какие подводные?
p.s. асм и си знаю.