LINUX.ORG.RU

оптимизация при компиляции


0

0

1. к примеру есть такой контекст:

local-block:
environment: 
   a=1
function-call:
   + a 2 b
логично оптимизировать это до:
local-block:
function-call:
   + 3 b
здесь мы пользуемся ф-цией «+» компилятора(языка на котором он реализован). Т.к. арифм. операции для целых везде одинаковы, то никаких проблем не возникает. Я так понимаю, можно заюзать стандартную библиотеку компилируемого языка и выполнять такие вот оптимизации для любых стандартных данных статических относительно рантайма. Правильно?

2. Неименованные данные, не влезающие в регистр полностью, стоит сохранять в памяти или на стеке? Если в памяти, то, видимо, расширять окружение временными именами(для GC)? типо -

function-call: some-str-f "123" 
-> ptr = allocate-mem()
-> write-in-memory ptr "123"
-> extent-enviroment 'tmp1 ptr
-> ...другие примитивы работают с "123" по частям, подгружая из памяти по указателю ptr 
где write-in-memory должна работать на уровене выше, чтобы суметь побайтно(или по размеру аккамулятора) заносить данные в память.

Если на стеке то непонятно как будет реализован доступ не к вершине стека.

function-call: some-str-f "1" "2"
work-with-parts "1" "2"
...
или ещё как-то?

>Я так понимаю, можно ... выполнять такие вот оптимизации для любых стандартных данных статических

Да, в компиляторах это реализовано.

anon_666
()

>Т.к. арифм. операции для целых везде одинаковы

Разрядность аппаратных типов данных может различаться.

anon_666
()
Ответ на: комментарий от anon_666

я имею ввиду, что там не нужно собираться обычной сборкой мусора, а достаточно раскрутить стек при выходе из ф-ции

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

>Неименованные данные, не влезающие в регистр полностью

Учитывая большое число регистров на x86_64 и risc - можно сохранить в нескольких, и это тоже используется.

anon_666
()

ок, тут я бы ещё хотел спросить какие нибудь другие оптимизации на ICR, может кто-то что-то интересное знает?

pseudo-cat ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.