Автор Тема: Project Oberon (New Edition 2013)  (Прочитано 46392 раз)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #60 : Декабрь 22, 2013, 02:45:11 pm »
Да, и еще один нюанс - исходя из набора инструкций процессора, за одну инструкцию загнать в регистр константу времени компиляции можно только если константа укладывается в 16бит, либо если она может быть получена из 16ти бит дополнением до 32бит нулями либо единицами.

Причем примеров как быть с 32битными константами я пока в книге не нашел (возможно найду в CC).

В общем то код для этого случая тут: https://github.com/ilovb/ProjectOberon2013/blob/master/ORGX.Mod#L65
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #61 : Декабрь 22, 2013, 03:13:24 pm »
Да, и еще один нюанс - исходя из набора инструкций процессора, за одну инструкцию загнать в регистр константу времени компиляции можно только если константа укладывается в 16бит, либо если она может быть получена из 16ти бит дополнением до 32бит нулями либо единицами.

Причем примеров как быть с 32битными константами я пока в книге не нашел (возможно найду в CC).

В общем то код для этого случая тут: https://github.com/ilovb/ProjectOberon2013/blob/master/ORGX.Mod#L65

Однако в этом коде есть одна непонятка - зачем там выставляется флаг U для инструкции Mov?
Put1(Mov+U, RH, 0, im DIV 10000H);

Если брать описание инструкций в CC - для инструкции Mov U не играет роли, имеет смысл только V. Вообще, по логике вещей, тут нужно было бы закинуть в старшие биты регистра RH результат деления im на 2^16. Быть может флаг U как раз ровно за это и отвечает (для формата 1)?
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #62 : Декабрь 22, 2013, 03:34:52 pm »
Однако в этом коде есть одна непонятка - зачем там выставляется флаг U для инструкции Mov?
Put1(Mov+U, RH, 0, im DIV 10000H);

Если брать описание инструкций в CC - для инструкции Mov U не играет роли, имеет смысл только V. Вообще, по логике вещей, тут нужно было бы закинуть в старшие биты регистра RH результат деления im на 2^16. Быть может флаг U как раз ровно за это и отвечает (для формата 1)?

Ответ найден тут: http://www.inf.ethz.ch/personal/wirth/FPGA-relatedWork/RISC.pdf
Цитировать
Register instructions contain two modifier bits u and v. The instruction MOV with u set to 1 shifts the
immediate value im by 16 bits to the left. Instructions ADD and SUB with the modifier bit u set to 1 add
(subtract) the carry bit C, and the MUL instruction with u set to 1 considers the operands as unsigned
numbers, yielding a 64-bit unsigned product.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #63 : Декабрь 25, 2013, 02:52:46 pm »
Опаньки. Оказывается не все исходники Оберона (операционки) выложены. Как минимум не хватает модуля Modules (который импортируется например модулем Oberon).
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #64 : Декабрь 25, 2013, 03:46:14 pm »
Проверил все модули на предмет недостачи: недостает ровно двух модулей - Modules и V24.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #65 : Декабрь 26, 2013, 11:32:29 am »
Кстати, у меня ощущение. что раньше, в более старой версии системы, SYSTEM использовался не столь широко. Теперь же он используется повсеместно.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Project Oberon (New Edition 2013)
« Ответ #66 : Декабрь 26, 2013, 12:29:32 pm »
Надо бы утилитку написать которая построит граф модулей.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #67 : Декабрь 26, 2013, 12:38:55 pm »
Надо бы утилитку написать которая построит граф модулей.
Сделай. Штука полезная будет.
Y = λf.(λx.f (x x)) (λx.f (x x))

X512

  • Newbie
  • *
  • Сообщений: 45
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #68 : Декабрь 27, 2013, 02:57:08 am »
Надо бы утилитку написать которая построит граф модулей.
Такая утилита уже есть в BlackBox, но толку от неё мало. При большом количестве модулей линии пересекаются и ничего не понятно.

Лучше сделать по типу http://www.dependencywalker.com/.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #69 : Декабрь 27, 2013, 07:19:27 am »
Надо бы утилитку написать которая построит граф модулей.
Такая утилита уже есть в BlackBox, но толку от неё мало. При большом количестве модулей линии пересекаются и ничего не понятно.

Лучше сделать по типу http://www.dependencywalker.com/.
Для текущих нужд, по крайней мере мне, было бы достаточно тулзы которая генерит текстовый файлик в dot-формате.
Y = λf.(λx.f (x x)) (λx.f (x x))

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: Project Oberon (New Edition 2013)
« Ответ #70 : Декабрь 27, 2013, 09:16:00 am »

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: Project Oberon (New Edition 2013)
« Ответ #71 : Декабрь 27, 2013, 09:26:25 am »
forum.oberoncore.ru/viewtopic.php?p=46375#p46375

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #72 : Декабрь 27, 2013, 09:45:28 am »
http://oberoncore.ru/library/iljin_blackbox_sysgraph
А можно ссылку на тулзу именно для оберона? Зависимости модулей ББ мне пока не нужны.
Y = λf.(λx.f (x x)) (λx.f (x x))

satan

  • Newbie
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #73 : Декабрь 29, 2013, 03:33:17 pm »

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Project Oberon (New Edition 2013)
« Ответ #74 : Декабрь 29, 2013, 05:02:45 pm »
http://www.inf.ethz.ch/personal/wirth/ProjectOberon/index.html

Что то изменилось?
Да. Как минимум появился Modules и верилог-исходники, в том числе top-level. Надо еще посмотреть содержание и текст книги, возможно там тоже изменения.

И это все очень здорово :-) Хороший подарок к новому году (по крайней мере для меня).
Y = λf.(λx.f (x x)) (λx.f (x x))