LINUX.ORG.RU
ФорумTalks

Andesaurux почти готов!

 , , , ,


0

3

7 января 2024 я объявил о начале разработки Andesaurux, лёгкого ядра ОС. 12 января я создал репозиторий на GitHub и где-то в середине января я решил создать полноценную ОС, а не просто ядро. Теперь мне остаётся только сделать, чтобы загрузчик работал и тогда, выйдет версия v0.0.1.0. Ссылка на репозиторий: https://github.com/Anatoliy6463/Andesaurux

Перемещено Zhbert из development



Последнее исправление: Anatoloy6463 (всего исправлений: 1)

Ответ на: комментарий от Anatoloy6463

Добавил:

#include <stdio.h>
int exponent(int a, int b)
{
      if (b == 0)
      {
            return (1);
      }
      int c = a;
      for (int i = 1; i < b; i++)
      {
            c = c*a;
      }
      return (c);
}
/* Calculator for Andesaurux operating system */
int main(void)
{
  double a, b = 0;
  short int c = 0;
  puts("Enter two numbers:\t");
  scanf("%lg %lg", &a, &b);
  puts("Enter operation symbol:\t");
  getchar();
  c = getchar();
  switch(c)
    {
      case '+':
	printf("%d+%d=%d", a, b, a+b);
	break;
      case '-':
	printf("%d-%d=%d", a, b, a-b);
	break;
      case '*':
	printf("%d*%d=%d", a, b, a*b);
	break;
      case '/':
	printf("%d/%d=%d", a, b, a/b);
	break;
      case '^':
      printf("%d^%d=%d", a, b, exponent(a, b));
      default:
	printf("%c - WTF?!", c);
	break;
      
    }
  putchar('\n');
  return (0);
}
Anatoloy6463
() автор топика
Ответ на: комментарий от PPP328

stdarg.h защищён по GNU GPL v2, так как он взят из ядра Linux texorlite.c защищён по BSD-2 Clause и я внёс туда пару изменений, так что я разработчик. Я указал авторов, так что мне ничего не будет

Anatoloy6463
() автор топика
Ответ на: комментарий от Anatoloy6463

stdarg.h защищён по GNU GPL v2, так как он взят из ядра Linux texorlite.c защищён по BSD-2 Clause

Это нужно указывать вместе с исходниками и прилагать лицензию там.

Я указал авторов, так что мне ничего не будет

Это не так работает.

PPP328 ★★★★★
()
Ответ на: комментарий от Anatoloy6463

О, я знаю как тебя отвлечь от этой темы. А добавь-ка, если не затруднит, поддержку скобок в свой калькульятор. Чтобы можно было вводить какие-то такие выражения:

3 * (7 + 2) - 6 / (50 - 4)

alman ★★★
()
Ответ на: комментарий от Leupold_cat

Буду ждать первой версии с работающим загрузчиком.

Тут загрузчик грузит сам себя. И не учтено наличие Partition Table

mov bx, kernel_load
mov ah, 0x02
mov al, 0x01
mov ch, 0x00
mov dh, 0x00
mov dl, 0x80
int 0x13
jc load_error

jmp 0x0000:kernel_entry
alman ★★★
()
Ответ на: комментарий от alman

Не стеба ради.
Расскажи где сейчас на практике ОПЗ применяется? Я ее за всю жизнь дважды встречал: Электроника МК-52 и RedPower2, да прикольно что не надо скобки ставить, но мозги ж ломаются чтобы правильно выстроить ввод для сложного выражения.

Kolins ★★★★
()
Ответ на: комментарий от Anatoloy6463

Хм, надо будет глянуть как-нибудь когда тему свою заведу, раньше точно прокатывало со звездой.

Kolins ★★★★
()
Ответ на: комментарий от Kolins

Один из самых простых способов посчитать выражение с приоритетами операций - перевести его в ОПЗ. Выражение, перевёденное в ОПЗ, считается очень легко. А вот чтобы перевести его в ОПЗ, для этого надо немного постараться.

На практике может пригодиться как раз учёта приоритетов операций.

alman ★★★
()
Ответ на: комментарий от Kolins

Практически любой адекватный парсер математики.

Там даже мозги не нужно ломать - вы строите таблицу с операциями и их приоритетом, туда вписываете хоть 20 типов скобок и вообще любые выражения которые представляете.

И парсер примитивный становится - читаете что-то - это число? В стек. Это операция? Смотрим таблицу приоритетов (можете коллбек хоть прям в нее вписать) и всё. В зависимости от приоритета пихаете или в стек или из стека в результирующий список или сразу в результирующий. Там примитивизм до боли. Потом тупо по порядку выполняете что в результирующем списке.

PPP328 ★★★★★
()
Ответ на: комментарий от Kolins

ОПЗ в реализации прям совсем примитивная вещь, просто забив таблицу всё остальное вообще примитив. Сюда же можно всунуть разные виды скобок, функции, нестандартные операнды:

Таблица операций

 	N	+	-	*	/	(	)
N	4	1	1	1	1	1	5
+	2	2	2	1	1	1	2
-	2	2	2	1	1	1	2
*	2	2	2	2	2	1	2
/	2	2	2	2	2	1	2
(	5	1	1	1	1	1	3

Вот вам примитивная таблица. N - «Пусто», cтолбцы - это текущий токен, строки - последнее, что сейчас в промежуточном стеке.

  • 1 - кладем текущий токен в промежуточный,
  • 2 - один токен из промежуточного в конечный,
  • 3 - текущий токен + последний токен в промежуточном уничтожаются
  • 4 - конец
  • 5 - фейл, имбаланс скобок

Пример:

На вход «(1 + 2) * 4 + 3» По шагам (текущий токен, промежуточный стек, конечный стек, число из таблицы, действие):

  • (, <>, <>, 1 - кладем в промежуточный
  • 1, <(>, <>, просто число - сразу идет в конечный
  • +, <(>, <1>, 1 - кладем в промежуточный
  • 2, <(, +>, <1>, просто число - сразу в конечный
  • ), <(, +>, <1, 2>, 2 - один из промежуточного в конечный
  • ), <(>, <1, 2, +>, 3 - уничтожаем текущий + последний в промежуточном
  • *, <>, <1, 2, +>, 1 - кладем в промежуточный
  • 4, <*>, <1, 2, +>, просто число - сразу в конечный
  • +, <*>, <1, 2, +, 4>, 2 - один из промежуточного в конечный
  • +, <>, <1, 2, +, 4, *>, 1 - кладем в промежуточный
  • 3, <+>, <1, 2, +, 4, *>, просто число - сразу в конечный
  • N, <+>, <1, 2, +, 4, *, 3>, 2 - один из промежуточного в конечный
  • N, <>, <1, 2, +, 4, *, 3, +>, 4 - Конец

Итог:

1 2 + 4 * 3 +

Выполняем (стек, остаток выражения):

  • <>, <1, 2, +, 4, *, 3, +>
  • <1>, <2, +, 4, *, 3, +>
  • <1, 2>, <+, 4, *, 3, +>
  • <3>, <4, *, 3, +>
  • <3, 4>, <*, 3, +>
  • <12>, <3, +>
  • <12, 3>, <+>
  • <15>, <>

Проверяем:

(1 + 2) * 4 + 3 = 15

PPP328 ★★★★★
()

Показалось, что «почтил готов!» будет чем-то интересным.
Оказалosь, что показалosь.

dataman ★★★★★
()
Ответ на: комментарий от PPP328

обожаю когда говорят на истинном-программистском <3
*прошу прощения, не смог удержаться

etwrq ★★★★★
()
Последнее исправление: etwrq (всего исправлений: 1)
Ответ на: комментарий от alman

Какого ещё четвёртого курса? Уровень 5 класса школы. А на самом деле - уровень толстого тролля.

firkax ★★★★★
()

Там это, ссылка мёртвая. Хоть бы рожицу клоуна разместил там. Было бы что обсудить, а так 404

peregrine ★★★★★
()

Поставил палец вверх. Метапрог уже не тот. Нет больше тем на 100500 страниц. Теперь ты за него. Делай дневники разработчика ядра ОС.

ox55ff ★★★★★
()
Ответ на: комментарий от krasnh

А за что на гитхабе могут аккаунт удалить? Он туда процессоры заливал или что?

peregrine ★★★★★
()
Ответ на: комментарий от rupert

Я не удалял свой аккаунт, я могу в него залогиниться, но он скрыт почему-то

Anatoloy6463
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)