User Tag List

Показано с 1 по 10 из 213

Тема: Компилятор языка Паскаль - планы на будущее

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Да, вот именно так у меня и было. Работало. Но таким способом получается хороший код для простых процессоров, а, например, для x86 или ARM с их заковыристыми адресациями такой метод просто не видит операции, они "рассыпаются" в псевдокоде.
    Про x86 не знаю, не писал никогда на его асме. Возможно, определенные последовательности псевдокоманд можно объединять в одну команду асма x86.
    У меня сейчас в выражениях используется только двухбайтовое представление (через регистровую пару HL), даже если действия производятся над однобайтовыми значениями. Только чтение и запись значений производятся соответственно размерности. Здесь нужно делать еще один проход, чтобы определить максимальный используемый тип в сгенерированном выражении. В первой версии компиля пока не буду это оптимизировать.
    И еще индуктивность переменных тоже никак не учитываю. Так что, если встретится например:
    Код:
    for i:=1 to 100 do
    a[i]:=i;
    то на каждой итерации цикла будет рассчитываться заново адрес в памяти для ячейки a[i], хотя можно было всего лишь прибавить смещение к предыдущей ячейке. Здесь нужно уже анализировать весь поток от начала до конца цикла, а вдруг еще внутри есть другие циклы и ветвления. Пока не стал заморачиваться. А вот если эта же ячейка понадобится еще раз после, то уже возьмется запомненный ее адрес, это я сделал:
    Код:
    for i:=1 to 100 do
    begin
       a[i]:=i;
       b[i]:=i+1;
       if a[i]>b[i] then a[i]:=100;
    end;
    Ячейка a[i] только один раз будет рассчитываться.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Возможно, определенные последовательности псевдокоманд можно объединять в одну команду асма x86.
    Да, одной командой x86 можно объединить несколько простых псевдокоманд.
    Код:
    movswl EAX,[EBP+EDX*2+1200h]
    Вот такое чтение элемента массива размером 2 байта, номер которого в EDX, с одновременной конвертацией в longint с учётом знака. Сколько это команд на псевдокоде...?

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Пожелания и планы по эмулятору Башкирия-2М
    от b2m в разделе Эмуляторы отечественных компьютеров
    Ответов: 848
    Последнее: 30.10.2025, 20:37
  2. Пожелания и планы по эмулятору MESS
    от shattered в разделе Эмуляторы отечественных компьютеров
    Ответов: 57
    Последнее: 02.08.2017, 22:14
  3. Планы на новые создаваемые игры
    от TomCaT в разделе Игры
    Ответов: 67
    Последнее: 21.03.2012, 14:44
  4. Назад в будущее?
    от Sonic в разделе Оси
    Ответов: 27
    Последнее: 19.07.2005, 16:56

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •