瀏覽代碼

Update 2015-07-23-Работа-кипит.md

Пётр 10 年之前
父節點
當前提交
3562024e12
共有 1 個文件被更改,包括 11 次插入1 次删除
  1. 11 1
      _posts/2015-07-23-Работа-кипит.md

+ 11 - 1
_posts/2015-07-23-Работа-кипит.md

@@ -1,5 +1,15 @@
 При работе над компилятором LOMO проявляются тонкие моменты, которые не были очевидны на бумаге. 
 
-Например, регистру присваивают значение и в следующей инструкции используют в качестве значения в выражении. Какое значение регистра должно быть использовано? При последовательном исполнении должно быть использовано обновленное значение. Но при параллельном исполнении такое поведение приведет к неявной ошибке, если вдруг инструкция чтения выполнится раньше инструкции записи. Поэтому регистр получает обновленное значение, которое будет доступно только в следующем такте. Проблема в том, что последовательная запись инструкций присваивания может сбить с толку.
+Например, регистру присваивают значение и в следующей инструкции используют в качестве значения в выражении. Какое значение регистра должно быть использовано? 
+
+  UNIT Top
+  	REG x INTEGER
+  	VAR z INTEGER
+  PROCESS
+  	x := x = 0 ? 1 :: x = 1 ? 2 :: 0
+  	z := x
+  END Top
+
+При последовательном исполнении должно быть использовано обновленное значение. Но при параллельном исполнении такое поведение приведет к неявной ошибке, если вдруг инструкция чтения выполнится раньше инструкции записи. Поэтому регистр получает обновленное значение, которое будет доступно только в следующем такте. Проблема в том, что последовательная запись инструкций присваивания может сбить с толку.
 
 Такие вот тонкие моменты.