- 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
        
        
Пришло время для jit-реконпеляции.
Отловишь запись и джитнешь кусок заново.
У меня пока такая идея -- в каждую инструкцию записи добавлять проверку по битмапе (бряки тут не нужны т.к. хостовый код мы сами высрали).
Да, это оверхед. Но странички могут ещё больше оверхеда дать если код и данные не разнесены.
В любом случае быстрее интерпретатора будет.
Всегда ведь можно написать
А есть ли процессоры, где запись кода и запись данных нужно разными инструкциями делать? Тогда легко можно было бы поддержать самомудифицрвн кд.
Или это и будет Фон Нейман?
На мелких вроде было три -- флешка, память и I/O. Причём регистры видно как память.
На больших судя по всему растянули шину к памяти до 16 бит и добавили MMIO.
Это вам не сраный ibm pc.
Там пинов не хватит, придётся внешние микрухи вешать для кнопок и дисплея.
g "детская логическая машина ДЛМ"
супрасинтаксическая заумь: при формальной, грамматической правильности конструкций, составленных из обычных слов, высокая степень неопределённости возникает на уровне референции — проще говоря, остается принципиально неясным, о чём идёт речь.
Монада — это моноид в категории эндофункцторов
фон Нейман — вместе
jit для фон Неймана как раз и возможен
Тут вообще никаких проблем
Говно. Сделай универсальные интсрукции, котторые это с указанным регистром проделывают
Правда BL (а ля CALL) только в R14 пишет, и адрес разврата самому в стек пушить/попать надо.
В thumb есть. Из-за более компактного кодирования пришлось пожертвовать универсальностью регистров.
я слышал это вырезали в x64
и если ret можно закодировать одним байтом, то loadincrement это уже три байта, что будет медленее в софтварном исполнении.
в отличии от little c compiler
У них там была квантовая неопределённость и прога иногда собиралась неправильно. Из-за этого отключали. Возможно, что уже пофиксили.
В нашем проекте, к болью вынужден я признать, делать полный клин и ребилд приходится раз в неделю
Видимо поэтому и не могут запинать.
Я не знаю как в растишке, но по идее если ты можешь построить граф зависимостей, то проблем быть не должно. Или там в одном файле может быть 100500 классов?
Просто тогда придется парсить и копулировать каждый раз при запуске