- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
.org 22h
dw @vbi
.org 80h
bpos: db 0h 0h
vector: db 2h 1h
process:
push %a
push %b
mov %a [@bpos] ; {h:x, l:y} ;
mov %b [@vector] ; {h:dx, l:dy} ;
add %ah %bh
add %al %bl
cmp %ah 11h
jng @.skip_xoverflow_handle
cmp %ah 14h
jg @.overflow_left
mov %ah 11h
jmp @.xoverflow_finally
.overflow_left:
mov %ah 0h
.xoverflow_finally:
neg %bh
.skip_xoverflow_handle:
cmp %al 5Ch
jng @.skip_yoverflow_handle
cmp %al 60h
jg @.overflow_up
mov %al 5Bh
jmp @.yoverflow_finally
.overflow_up:
mov %al 1h
.yoverflow_finally:
neg %bl
.skip_yoverflow_handle:
mov [@bpos] %a
mov [@vector] %b
pop %b
pop %a
ret
cls:
push %a
push %b
mov %a 3A98h
.loop:
mov [%a + @T1] 0000h
sub %a 2h
jnz @.loop
pop %b
pop %a
ret
render:
push %a
push %b
push %c
mov %a [@bpos] ; {h:x, l:y} ;
mov %b %al
mul %b 12h
add %b %ah
add %b @T1
mov %c 8h
.loop:
movb [%b] FFh
add %b 12h
dec %c
jnz @.loop
pop %c
pop %b
pop %a
ret
start:
mov %sp FFFFh
outb 20h 1h
outb 21h 16h
out 22h @T1
mov %al 1h
int 10h
.loop:
jmp @.loop
vbi:
call @cls
call @render
call @process
ret
.org 1000h
T1:
решил пойти по накатанному пути и добавил видеоконтроллер, пока только монохромная битовая карта 144x100, но большего и не надо
сабж выводит на экран что отпрыгивает от стен, простое умножение компонента вектора на -1
digitalEugene 14.02.2022 14:48 # 0
digitalEugene 15.02.2022 14:00 # 0
bormand 15.02.2022 15:19 # 0
Пришло время для jit-реконпеляции.
digitalEugene 15.02.2022 15:32 # 0
bormand 15.02.2022 15:34 # 0
Отловишь запись и джитнешь кусок заново.
guest6 15.02.2022 15:52 # 0
bormand 15.02.2022 17:05 # 0
У меня пока такая идея -- в каждую инструкцию записи добавлять проверку по битмапе (бряки тут не нужны т.к. хостовый код мы сами высрали).
Да, это оверхед. Но странички могут ещё больше оверхеда дать если код и данные не разнесены.
В любом случае быстрее интерпретатора будет.
guest6 15.02.2022 17:08 # 0
Всегда ведь можно написать
А есть ли процессоры, где запись кода и запись данных нужно разными инструкциями делать? Тогда легко можно было бы поддержать самомудифицрвн кд.
Или это и будет Фон Нейман?
bormand 15.02.2022 17:10 # 0
guest6 15.02.2022 17:17 # 0
bormand 15.02.2022 18:10 # 0
guest6 15.02.2022 18:11 # 0
bormand 15.02.2022 18:13 # 0
На мелких вроде было три -- флешка, память и I/O. Причём регистры видно как память.
На больших судя по всему растянули шину к памяти до 16 бит и добавили MMIO.
bormand 15.02.2022 18:22 # 0
Это вам не сраный ibm pc.
guest6 15.02.2022 18:30 # 0
digitalEugene 15.02.2022 18:51 # 0
guest6 15.02.2022 18:54 # 0
bormand 15.02.2022 19:20 # 0
Там пинов не хватит, придётся внешние микрухи вешать для кнопок и дисплея.
MPA3b 15.02.2022 19:20 # 0
guest6 15.02.2022 19:39 # 0
MPA3b 15.02.2022 19:41 # 0
Soul_re@ver 15.02.2022 19:42 # +2
guest6 15.02.2022 20:04 # +1
g "детская логическая машина ДЛМ"
kcalbCube 06.03.2022 09:29 # 0
bormand 15.02.2022 18:51 # 0
guest6 15.02.2022 18:54 # 0
digitalEugene 15.02.2022 18:56 # +1
ObeseYoung 15.02.2022 20:03 # 0
guest6 15.02.2022 20:06 # 0
MPA3b 15.02.2022 20:09 # 0
MPA3b 15.02.2022 20:12 # 0
супрасинтаксическая заумь: при формальной, грамматической правильности конструкций, составленных из обычных слов, высокая степень неопределённости возникает на уровне референции — проще говоря, остается принципиально неясным, о чём идёт речь.
Монада — это моноид в категории эндофункцторов
666_N33D135 16.02.2022 11:46 # 0
MPA3b 15.02.2022 17:20 # 0
MPA3b 15.02.2022 17:16 # 0
фон Нейман — вместе
jit для фон Неймана как раз и возможен
MPA3b 15.02.2022 17:18 # 0
Тут вообще никаких проблем
666_N33D135 16.02.2022 11:45 # 0
Говно. Сделай универсальные интсрукции, котторые это с указанным регистром проделывают
kcalbCube 16.02.2022 13:39 # 0
666_N33D135 16.02.2022 14:09 # +2
Правда BL (а ля CALL) только в R14 пишет, и адрес разврата самому в стек пушить/попать надо.
bormand 16.02.2022 14:43 # +2
В thumb есть. Из-за более компактного кодирования пришлось пожертвовать универсальностью регистров.
kcalbCube 16.02.2022 14:57 # 0
я слышал это вырезали в x64
kcalbCube 16.02.2022 14:59 # 0
и если ret можно закодировать одним байтом, то loadincrement это уже три байта, что будет медленее в софтварном исполнении.
O4epegHou_nemyx 16.02.2022 15:07 # 0
OMuKPOH 16.02.2022 15:28 # 0
digitalEugene 14.02.2022 14:59 # 0
ObeseYoung 14.02.2022 16:36 # +1
bormand 14.02.2022 16:44 # 0
Soul_re@ver 15.02.2022 15:21 # +1
digitalEugene 15.02.2022 17:27 # 0
bormand 15.02.2022 17:29 # 0
digitalEugene 15.02.2022 17:33 # 0
в отличии от little c compiler
bormand 15.02.2022 17:36 # 0
guest6 15.02.2022 17:48 # 0
bormand 15.02.2022 17:53 # 0
У них там была квантовая неопределённость и прога иногда собиралась неправильно. Из-за этого отключали. Возможно, что уже пофиксили.
MPA3b 15.02.2022 17:59 # 0
guest6 15.02.2022 18:07 # 0
В нашем проекте, к болью вынужден я признать, делать полный клин и ребилд приходится раз в неделю
bormand 15.02.2022 19:05 # 0
Видимо поэтому и не могут запинать.
guest6 15.02.2022 19:10 # 0
Я не знаю как в растишке, но по идее если ты можешь построить граф зависимостей, то проблем быть не должно. Или там в одном файле может быть 100500 классов?
Fike 15.02.2022 19:48 # +1
digitalEugene 16.02.2022 04:39 # 0
guest6 16.02.2022 04:52 # 0
bormand 16.02.2022 09:00 # 0
Noodles 16.02.2022 09:01 # 0
kcalbCube 16.02.2022 15:44 # 0
666_N33D135 16.02.2022 11:48 # 0
bormand 16.02.2022 12:44 # 0
ObeseYoung 16.02.2022 16:40 # 0
guest6 16.02.2022 16:48 # 0
Просто тогда придется парсить и копулировать каждый раз при запуске
kcalbCube 16.02.2022 15:45 # 0
OMuKPOH 16.02.2022 16:42 # 0
guest6 16.02.2022 16:45 # 0
guest6 16.02.2022 16:51 # 0