Высокоуровневый ассемблер

Applications development, KoOS API questions
  • Исправил много баг. Свел утечку памяти к минимуму. Операции выполняются в 3 раза быстрее, чем в javascript. Добавил функции для получения длины текста, символ из кода ascii, думаю добавитэь разные кодировки, выход из программы с завершением всех созданных процессов.
    Технологии меняют мир, а я - меняю технологии.
  • А у тебя JIT-компиляция планируется? Без неё высокой скорости не добиться.
  • Pathoswithin wrote:А у тебя JIT-компиляция планируется? Без неё высокой скорости не добиться.
    Конечно, но это уже в конечной стадии скорее всего.

    Я вот думаю на счет синтаксиса оттолкуться ли от асма?

    Code: Select all

    #define cls,'console cls'
    main:
    console print,'Shell v.1 h-help'
    console getch,%10
    if %10,KEY_ESC
    = end
    sym %10,%10
    if %10,'h'
    = help
    != nocmd
    jmp main
    
    help:
    cls
    console print,'Help text             '
    console getch,%10
    cls
    jmp main
    
    nocmd:
    cls
    console print,'No cmd                '
    sleep 100
    cls
    jmp main
    
    end:
    exit
    Технологии меняют мир, а я - меняю технологии.
  • Организовал вызов функции по адресу

    Пример

    Code: Select all

    #define func1, '%1' // даем знать препроцессору, что func1, как %1
    mov func1,1234567 // передаем адрес/число переменной %2, в данном случае адрес функции на который будет сделан вызов
    func1 %2 // вызываем функцию func1 с адресом 1234567 и передаем один параметр переменную %2 (автоматически преобразуются данные по типу)
    Зачем это нужно? Скоро узнаете 8)
    Технологии меняют мир, а я - меняю технологии.
  • Теперь возможна загрузка obj файлов.
    Вот пример

    Code: Select all

    #define init_console, '%1'
    #define print, '%2'
    
    dll load,'/sys/lib/console.obj' // загрузить библиотеку
    
    dll function,init_console,'con_init' // загрузить в переменную %1 адрес функции con_init
    dll function,print,'con_write_asciiz' // загрузить в переменную %2 адрес функции con_write_asciiz
    
    #define title,'%10'
    mov title,'Test'
    
    init_console title,-1,-1,-1,-1
    
    mov %11,'Full path VM: '
    add %11,PATH
    add %11,'\n'
    
    add %11,'File name VM: '
    add %11,FILE
    add %11,'\n'
    
    add %11,'Dir name VM: '
    add %11,DIR
    add %11,'\n'
    
    add %11,'File name apps: '
    add %11,SFILE
    add %11,'\n'
    
    add %11,'Full path apps: '
    add %11,SPATH
    add %11,'\n'
    
    print %11' // вызов функции


    Замете, очень удобно, зная только название функции и что за аргументы передавать можно вызвать любую функцию, параметры передаются в формате не в stdcall, поэтому в обратном порядке, возможно потом поменяю.

    Так же добавил

    Специальные переменные, которые содержат путь где находиться виртуальная машина, название файла виртуальной машины, папка где находиться виртуальная машина ( пригодиться для загрузки и установки настроек ), путь/название/папка откуда запущен файл приложения для виртуалки.

    P.S. все названия хэшируются, все номера переменных тоже, разрешение коллизий везде, поэтому думаю встроить массивы не составит труда.
    Attachments
    Безымянный.PNG
    Безымянный.PNG (10.14 KiB)
    Viewed 9974 times
    Технологии меняют мир, а я - меняю технологии.
  • Ура! Появилось возможность создавать первый объект - это окно.

    Пример

    Code: Select all

    object window,%1 // определим переменную 1, как окно
    property left,%1,100 // изменим свойство left на 100 для окна
    create %1 // создадим окно
    Технологии меняют мир, а я - меняю технологии.
  • Оптимизировал еще ВМ. Теперь инкремент команда, которая находиться в 10 000 000 интераций выполняется за 4 секунды, когда в то же время js выполняется тоже самое за 18 сек. на моей машине. 18/4 = 4.5 раза быстрее, когда раньше было 3. Прирост на 1.5 раза.
    Технологии меняют мир, а я - меняю технологии.
  • Что всё равно дофига медленней чем скомпилированный код.

    ... или я не понял. Ты хочешь на основе этого интерпретатора сделать поддержку javascript для браузера?
  • Pathoswithin wrote:Что всё равно дофига медленней чем скомпилированный код.

    ... или я не понял. Ты хочешь на основе этого интерпретатора сделать поддержку javascript для браузера?
    скомпилированный код с динамической типизацией?
    Вроде не знаю таких, которые быстрее работать будут.
    За все надо платить, за комфорт кодинга платишь скоростью.

    P.S. можно прикрутить js, для этого нужно сделать транслятор js в коды для VM. 1 этап когда запускается скрипт транслируется в байт код для ВМ. 2 этап запуск самого байт кода.

    Сделаю 2 этап он сложнее чем 1, а там я думаю трансляцию не составит труда написать.
    Вот думаю может для ВМ браузер напишу, уж быстрее писаться будет, чем на Си, уж тем более чем на асм.
    И при модернизации ВМ модернизируются все проги включающие в эту ВМ.
    Технологии меняют мир, а я - меняю технологии.
  • Pathoswithin wrote:Что всё равно дофига медленней чем скомпилированный код.

    ... или я не понял. Ты хочешь на основе этого интерпретатора сделать поддержку javascript для браузера?
    Если сравнить скорость работы скомпилированной на си программы, то она в 100 быстрее получается, но это не интерпретатор и со статической типизацией. Я думаю 100 раз это уже не так много. Правда нет возможно провести эксперемент с java.
    Технологии меняют мир, а я - меняю технологии.
  • Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.
    pavelyakov wrote:скомпилированный код с динамической типизацией?
    Вроде не знаю таких, которые быстрее работать будут.
    За все надо платить, за комфорт кодинга платишь скоростью.
    Несколько лет пытаюсь понять, в чём заключается комфорт от типов данных? Пишу на ассемблере именно потому, что там их нет.
  • Pathoswithin wrote:Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.
    pavelyakov wrote:скомпилированный код с динамической типизацией?
    Вроде не знаю таких, которые быстрее работать будут.
    За все надо платить, за комфорт кодинга платишь скоростью.
    Несколько лет пытаюсь понять, в чём заключается комфорт от типов данных? Пишу на ассемблере именно потому, что там их нет.
    Тем что меньше писать нужно и меньше тратить времени.
    Технологии меняют мир, а я - меняю технологии.
  • Pathoswithin wrote:Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.
    pavelyakov wrote:скомпилированный код с динамической типизацией?
    Вроде не знаю таких, которые быстрее работать будут.
    За все надо платить, за комфорт кодинга платишь скоростью.
    Несколько лет пытаюсь понять, в чём заключается комфорт от типов данных? Пишу на ассемблере именно потому, что там их нет.
    Вот и остается выбирать или быстродействие, или память.
    Технологии меняют мир, а я - меняю технологии.
  • Pathoswithin wrote:Благодаря JIT-компиляции java работает почти с той же скоростью что и си, но жрёт феерическое количество памяти и довольно долго запускается. А вот без JIT интерпретируемый язык является жутко медленным безумием.
    Почитал более подробно про JIT компиляцию, в принципе легче, когда имеешь байт код, который уже есть компилировать. Главное понять принцип как это реализовано.
    Технологии меняют мир, а я - меняю технологии.
  • Who is online

    Users browsing this forum: No registered users and 6 guests