Страницы

Поиск по вопросам

воскресенье, 29 марта 2020 г.

Насколько умны/глупы компиляторы

#ассемблер


Как реализовать задание:


  Доказать насколько умны компиляторы путем написания простых блоков оператор, написать
ассемблерную версию компилятора  


Или где можно прочитать о способе реализации?

1) A = 2+3


2) if |A>B| op1
       else    op2



3) for (int i=0, i<10, i+1)
         op3


Доказать, насколько глупы компиляторы, подставив во втором пункте значения:

5 > 3


В третьем пункте подставить:

i = 5, i < 3

    


Ответы

Ответ 1



В комментарий, отвечающий на "Не подскажете, как мне исследовать возможности компилятора(особенности, которые заложили его авторы)?(книжку, статью) как все это делается") не помещается, поэтому пишу в ответе. Честно говоря, литературу посвященную именно исследованиям возможностей компилятора, не знаю, но вот что в принципе могу посоветовать по теме компиляторов. Для общего знакомства с языками на мой взгляд хороша книга -- "Языки программирования: разработка и реализация" Т. Пратт, М. Зелковиц. Говоря непосредственно о компиляторах, безусловно, следует отметить классический труд, называемый "Книгой дракона" (в сети легко можно найти ее текст). Вероятно, для практического вхождения в тему стоит почитать Креншоу Д. "Пишем компилятор". Для знакомства с устройством процессора (системой команд, а также немного с ассемблером) посмотрите, например, "Цифровая схемотехника и архитектура компьютера". Понятно, что для каждой конкретной реализации потребуется проштудировать Programmer Rererence Manual по его ISA (instruction set architecture). И несомненно, надо рекомендовать практику компиляции примеров в ассемблерный код (например, запуская gcc -S -O2 t.c; less t.s) с различными ключами оптимизации (см., скажем man gcc), а также непосредственного экспериментирования с измерением времени работы своих примеров.

Комментариев нет:

Отправить комментарий