test(runtime): verify native generator budget consumption
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
This commit is contained in:
3 files changed
+79
-1
No files matched your search
@@ -686,6 +686,34 @@ provider getter и изменение количества не подменен
|
||||
категории и выполнение миссии этим не проверены.
|
||||
Rust пока не переносит этот изменяемый бюджетный цикл.
|
||||
|
||||
#### Генератор tag 19 в том же бюджетном проходе
|
||||
|
||||
Отдельный вектор заменяет mock-генератор исходным устройством tag `19`:
|
||||
конструктор `Control.dll` RVA `0x22980`, rate `0x229a0`, update `0x22a60`,
|
||||
vtable `0x3c608`. Конструктор выставляет слово включения `0x20`; descriptor
|
||||
с `+0x18 = -1` сохраняет его. Оба устройства проходят через исходные
|
||||
`0x2d340` и `0x2dca0`, их provider и изменение количества тоже исходные.
|
||||
|
||||
При положительных параметрах проверенного вектора выработка зависит от поля
|
||||
descriptor `+0x20`, текущего множителя `+0x4c`, доли provider и `dt`. Если
|
||||
коэффициент selector `0` положителен, rate ограничивается значением selector
|
||||
`0x200`, умноженным на долю provider. Поэтому один и тот же источник может
|
||||
вернуть полную выработку или её ограниченный запас.
|
||||
|
||||
| Коэффициент | Поле `+0x20` | Исходная rate | Amount после прохода | Доля provider | Множитель генератора после прохода |
|
||||
|---|---|---|---|---|---|
|
||||
| `1` | `0.5` | `0.1` | `0x42206666` | `0x3ecd4fdf` | `0x3f400000` (`0.75`) |
|
||||
| `0.125` | `0.5` | `0.05` | `0x42203333` | `0x3ecd0e56` | `0` |
|
||||
|
||||
В обоих случаях исходные amount, максимум, доля и интервал равны `40`, `100`,
|
||||
`0.4` и `0.5`, а исходный множитель генератора — `1`. Его update читает
|
||||
provider уже после потребителя tag `15`, повторно вычисляет rate и уменьшает
|
||||
собственный множитель. Это не запись коэффициента выделения в `+0x4c`, как у
|
||||
tag `15`: смысл изменения этого поля зависит от фабричного класса.
|
||||
Векторы проверяют конечные положительные значения при x87 CW `0x007f`;
|
||||
нулевой знаменатель, отрицательные параметры и другие классы устройств ими
|
||||
не покрыты. Перенос общего бюджетного цикла в Rust ещё не завершён.
|
||||
|
||||
#### Активация и начальные часы
|
||||
|
||||
Для Control класса `4` oracle вызывает исходный конструктор RVA `0x31490`
|
||||
|
||||
Reference in new issue
Block a user