SlideShare a Scribd company logo
XII международная конференция
CEE-SECR / РАЗРАБОТКА ПО
28 - 29 октября, Москва
Александр Камкин
Автоматизированная разработка
генераторов тестовых программ для
микропроцессоров на примере MIPS
Институт системного программирования РАН
Это генератор тестовых программ
Модель или прототип
(HDL, FPGA)
lui a0, 0xdead
ori a0, a0, 0x0
lui a1, 0xbeef
ori a1, a1, 0xf
add t0, a0, a1
sub t1, a0, t1
add t0, t0, t1
Тестовые программы
(ASM)
Эталонный симулятор
(C/C++, SystemC)
Трассы исполнения
(Tarmac)
0x2000: lui ...
0x2004: ori ...
0x2008: lui ...
0x200c: ori ...
0x2010: add ...
0x2014: sub ...
0x2018: add ...
Компаратор трасс
(Perl, Python)
0x2000: lui ...
0x2004: ori ...
0x2008: lui ...
0x200c: ori ...
0x2010: add ...
0x2014: sub ...
0x2018: bug ...
2
LABEL_4:
lw $2,8($fp)
lw $3,28($fp)
sltu $2,$2,$3
bne $2,$0,$L5
nop
lw $2,12($fp)
addiu $2,$2,1
sw $2,12($fp)
LABEL_2:
lw $3,12($fp)
lw $2,28($fp)
addiu $2,$2,-1
sltu $2,$3,$2
bne $2,$0,$L3
nop
move $sp,$fp
lw $fp,16($sp)
addiu $sp,$sp,24
j $31
nop
Как его разработать?
LABEL_8:
lw $2,12($fp)
sll $2,$2,3
move $3,$2
lw $2,24($fp)
addu $2,$3,$2
ldc1 $f0,0($2)
sdc1 $f0,0($fp)
lw $2,12($fp)
sll $2,$2,3
move $3,$2
lw $2,24($fp)
addu $4,$3,$2
lw $2,8($fp)
sll $2,$2,3
move $3,$2
lw $2,24($fp)
addu $2,$3,$2
ldc1 $f0,0($2)
sdc1 $f0,0($4)
lw $2,8($fp)
sll $2,$2,3
move $3,$2
lw $2,24($fp)
addu $2,$3,$2
ldc1 $f0,0($fp)
sdc1 $f0,0($2)
LABEL_6:
lw $2,8($fp)
addiu $2,$2,1
sw $2,8($fp)
TEST_PROGRAM:
addiu $sp,$sp,-24
sw $fp,16($sp)
move $fp,$sp
sw $4,24($fp)
sw $5,28($fp)
sw $0,12($fp)
j LABEL_2
nop
LABEL_3:
lw $2,12($fp)
addiu $2,$2, 1
sw $2,8($fp)
j LABEL_4
nop
LABEL_5:
lw $2,12($fp)
sll $2,$2,3
move $3,$2
lw $2,24($fp)
addu $2,$3,$2
ldc1 $f2,0($2)
lw $2,8($fp)
sll $2,$2,3
move $3,$2
lw $2,24($fp)
addu $2,$3,$2
ldc1 $f0,0($2)
c.lt.d $f0,$f2
nop
bc1t LABEL_8
nop
j LABEL_6
nop
3
Руководство по системе команд
Параметры генерации (шаблон)
 Последовательности команд
 Ограничения на данные
 Распределения вероятностей
 и т.д. и т.п.
Если только синтаксис
 Нарушение предусловий: UNPREDICTABLE
 Обращения к неинициализированным данным
 Переходы назад могут вызвать зацикливания
 Низкая вероятность возникновения corner-cases
 Невозможность создания self-checking тестов
4
Нужно учитывать семантику
5
Генератор на базе MicroTESK
Спецификации
Транслятор
Тестовые шаблоны
lui a0, 0xdead
ori a0, a0, 0x0
lui a1, 0xbeef
ori a1, a1, 0xf
add t0, a0, a1
sub t1, a0, t1
add t0, t0, t1
Тестовые программы
Модель процессора
Ядро генератора
type DWORD = card(64)
reg GPR [32, DWORD]
op ADD(rd: R, rs: R, rt: R)
image = format("0000%5s%5s%5s0000100000", rs.image, rt.image, rd.image)
syntax = format("add %s, %s, %s", rd.syntax, rs.syntax, rt.syntax)
action = {
if (NotWordValue(rs) || NotWordValue(rt)) then
unpredictable;
endif;
temp = rs<31>::rs<31..0> + rs<31>::rt<31..0>;
if (temp<32> != temp<31>) then
exception("IntegerOverflow");
else
rd = sign_extend(DWORD, temp<31..0>);
endif;
}
Спецификации на nML
6
Спецификация
mode R (i: card(5)) = GPR[i]
syntax = format("r%d", i)
image = format("%5s", i)
action = {
...
}
Регистры
Команды
Режимы доступа
Шаблоны на Ruby
7
class MyTemplate < Template
def initialize ... end
def pre ... end
def post ... end
def run
block(:combinator => 'product') {
iterate {
add t0, t1, t2
do situation('Normal') end
add t0, t1, t2
do situation('IntegerOverflow') end
}
iterate {
sub t3, t4, t5
do situation('Normal') end
sub t3, t4, t5
do situation('IntegerOverflow') end
}
}.run
end
end
lui r9, 0x858d
ori r9, r9, 0xc02e
lui r10, 0x58d2
ori r10, r10, 0x7219
lui r12, 0x898a
ori r12, r12, 0x49b7
lui r13, 0x0f31
ori r13, r13, 0xc65a
add r8, r9, r10
sub r11, r12, r13
Всего 2 × 2 = 4 варианта
Пролог / эпилог
Ассемблер
Всякие “фишки”
Инициализирующий код
Тестовое воздействие
Заключение
 Высокая автоматизация на базе спецификаций
 Гибкая настройка на разные архитектуры
 Расширяемость
 Поддержка MIPS
 Open source
 Применяется в
реальных проектах
8
Архитектура MIPS
Число команд 250 из 320
Объем nML спецификаций 4.5 KLOC
Трудоемкость 4 чел.-мес.
Будущее MicroTESK
 Online-генерация тестовых программ
 Генерация симуляторов
 Оценка тестового покрытия
 Настраиваемая компиляция
 Верификация ПО с учетом целевой архитектуры
9
http://www.isprasopen.ru
10
http://forge.ispras.ru/projects/microtesk
microtesk-support@ispras.ru
11

More Related Content

What's hot

условия, подпрограммы
условия, подпрограммыусловия, подпрограммы
условия, подпрограммы
������ �����
 
2007 Никольская "Разработка программных средств для помехоустойчивого кодиров...
2007 Никольская "Разработка программных средств для помехоустойчивого кодиров...2007 Никольская "Разработка программных средств для помехоустойчивого кодиров...
2007 Никольская "Разработка программных средств для помехоустойчивого кодиров...
RF-Lab
 
2.8 Строки и ввод-вывод
2.8 Строки и ввод-вывод2.8 Строки и ввод-вывод
2.8 Строки и ввод-вывод
DEVTYPE
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
Mikhail Kurnosov
 
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
Iosif Itkin
 
Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
 Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур  Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
it-people
 
Python&Printer / Андрей Пучко / penta.by
Python&Printer / Андрей Пучко / penta.byPython&Printer / Андрей Пучко / penta.by
Python&Printer / Андрей Пучко / penta.by
Python Meetup
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
Andrey Karpov
 
графика Pascal ABC
графика Pascal ABCграфика Pascal ABC
графика Pascal ABC
Элла Якубейко
 
Презентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатикаПрезентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатика2berkas
 
A Method of Reducing Computational Complexity in Verification of Programming ...
A Method of Reducing Computational Complexity in Verification of Programming ...A Method of Reducing Computational Complexity in Verification of Programming ...
A Method of Reducing Computational Complexity in Verification of Programming ...
Iosif Itkin
 
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
corehard_by
 
03 1 C 프로그램구성요소
03 1 C 프로그램구성요소03 1 C 프로그램구성요소
03 1 C 프로그램구성요소
Changwon National University
 
ADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кода
Andrey Karpov
 
Урок 6. Чистое лямбда-исчисление.
Урок 6. Чистое лямбда-исчисление. Урок 6. Чистое лямбда-исчисление.
Урок 6. Чистое лямбда-исчисление.
Система дистанционного обучения MyDLS
 
Flink CEP и немного магии...
Flink CEP и немного магии...Flink CEP и немного магии...
Flink CEP и немного магии...
Alexander Chermenin
 
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Platonov Sergey
 
Анимация в PascalABC
Анимация в PascalABCАнимация в PascalABC
Анимация в PascalABC
ValiaKuba
 

What's hot (20)

ФИЛП
ФИЛПФИЛП
ФИЛП
 
условия, подпрограммы
условия, подпрограммыусловия, подпрограммы
условия, подпрограммы
 
2007 Никольская "Разработка программных средств для помехоустойчивого кодиров...
2007 Никольская "Разработка программных средств для помехоустойчивого кодиров...2007 Никольская "Разработка программных средств для помехоустойчивого кодиров...
2007 Никольская "Разработка программных средств для помехоустойчивого кодиров...
 
2.8 Строки и ввод-вывод
2.8 Строки и ввод-вывод2.8 Строки и ввод-вывод
2.8 Строки и ввод-вывод
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
 
Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
 Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур  Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
Кодогенерация на службе оптимизации, Игорь Чевдарь, СКБ Контур
 
Python&Printer / Андрей Пучко / penta.by
Python&Printer / Андрей Пучко / penta.byPython&Printer / Андрей Пучко / penta.by
Python&Printer / Андрей Пучко / penta.by
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
 
графика Pascal ABC
графика Pascal ABCграфика Pascal ABC
графика Pascal ABC
 
Презентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатикаПрезентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатика
 
A Method of Reducing Computational Complexity in Verification of Programming ...
A Method of Reducing Computational Complexity in Verification of Programming ...A Method of Reducing Computational Complexity in Verification of Programming ...
A Method of Reducing Computational Complexity in Verification of Programming ...
 
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
 
03 1 C 프로그램구성요소
03 1 C 프로그램구성요소03 1 C 프로그램구성요소
03 1 C 프로그램구성요소
 
ADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кода
 
Урок 6. Чистое лямбда-исчисление.
Урок 6. Чистое лямбда-исчисление. Урок 6. Чистое лямбда-исчисление.
Урок 6. Чистое лямбда-исчисление.
 
Flink CEP и немного магии...
Flink CEP и немного магии...Flink CEP и немного магии...
Flink CEP и немного магии...
 
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
 
Анимация в PascalABC
Анимация в PascalABCАнимация в PascalABC
Анимация в PascalABC
 
Hw slides
Hw slidesHw slides
Hw slides
 

Viewers also liked

Practical RISC-V Random Test Generation using Constraint Programming
Practical RISC-V Random Test Generation using Constraint ProgrammingPractical RISC-V Random Test Generation using Constraint Programming
Practical RISC-V Random Test Generation using Constraint Programming
ed271828
 
Проблемы верификации и устранения найденных критических уязвимостей систем уп...
Проблемы верификации и устранения найденных критических уязвимостей систем уп...Проблемы верификации и устранения найденных критических уязвимостей систем уп...
Проблемы верификации и устранения найденных критических уязвимостей систем уп...
Nikandrov Maxim
 
Благодарственные письма STEM
Благодарственные письма STEMБлагодарственные письма STEM
Благодарственные письма STEM
АКМР Corpmedia.ru
 
Safe by design
Safe by designSafe by design
Презентация STEM
Презентация STEMПрезентация STEM
Презентация STEM
АКМР Corpmedia.ru
 
Программно-аппаратная разработка с использованием FPGA на примере поддержки п...
Программно-аппаратная разработка с использованием FPGA на примере поддержки п...Программно-аппаратная разработка с использованием FPGA на примере поддержки п...
Программно-аппаратная разработка с использованием FPGA на примере поддержки п...
CEE-SEC(R)
 
Process Matters
Process MattersProcess Matters
Process Matters
James Valentine, MSC
 
копия мовні закони)
копия мовні закони)копия мовні закони)
копия мовні закони)
Андррей Малахов
 
Real World Effective/Agile Requirements - IBM Innovate 2010 -sally elatta
Real World Effective/Agile Requirements - IBM Innovate 2010 -sally elattaReal World Effective/Agile Requirements - IBM Innovate 2010 -sally elatta
Real World Effective/Agile Requirements - IBM Innovate 2010 -sally elatta
Sally Elatta
 
А.Левенчук -- плохая модульность
А.Левенчук -- плохая модульностьА.Левенчук -- плохая модульность
А.Левенчук -- плохая модульность
Anatoly Levenchuk
 
Cropping system interaction
Cropping system interaction Cropping system interaction
Cropping system interaction
Hari Hariharasudhan
 
Histamine and antihistaminics
Histamine and antihistaminicsHistamine and antihistaminics
Histamine and antihistaminics
http://neigrihms.gov.in/
 

Viewers also liked (14)

Practical RISC-V Random Test Generation using Constraint Programming
Practical RISC-V Random Test Generation using Constraint ProgrammingPractical RISC-V Random Test Generation using Constraint Programming
Practical RISC-V Random Test Generation using Constraint Programming
 
Проблемы верификации и устранения найденных критических уязвимостей систем уп...
Проблемы верификации и устранения найденных критических уязвимостей систем уп...Проблемы верификации и устранения найденных критических уязвимостей систем уп...
Проблемы верификации и устранения найденных критических уязвимостей систем уп...
 
Благодарственные письма STEM
Благодарственные письма STEMБлагодарственные письма STEM
Благодарственные письма STEM
 
Safe by design
Safe by designSafe by design
Safe by design
 
Презентация STEM
Презентация STEMПрезентация STEM
Презентация STEM
 
Программно-аппаратная разработка с использованием FPGA на примере поддержки п...
Программно-аппаратная разработка с использованием FPGA на примере поддержки п...Программно-аппаратная разработка с использованием FPGA на примере поддержки п...
Программно-аппаратная разработка с использованием FPGA на примере поддержки п...
 
Process Matters
Process MattersProcess Matters
Process Matters
 
Hiponatremia
HiponatremiaHiponatremia
Hiponatremia
 
копия мовні закони)
копия мовні закони)копия мовні закони)
копия мовні закони)
 
Real World Effective/Agile Requirements - IBM Innovate 2010 -sally elatta
Real World Effective/Agile Requirements - IBM Innovate 2010 -sally elattaReal World Effective/Agile Requirements - IBM Innovate 2010 -sally elatta
Real World Effective/Agile Requirements - IBM Innovate 2010 -sally elatta
 
А.Левенчук -- плохая модульность
А.Левенчук -- плохая модульностьА.Левенчук -- плохая модульность
А.Левенчук -- плохая модульность
 
Cropping system interaction
Cropping system interaction Cropping system interaction
Cropping system interaction
 
Histamine and antihistaminics
Histamine and antihistaminicsHistamine and antihistaminics
Histamine and antihistaminics
 
Rizal exam
Rizal examRizal exam
Rizal exam
 

Similar to Автоматизированная разработка генераторов тестовых программ для микропроцессоров на примере MIPS

Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
Mikhail Kurnosov
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
Vasil Remeniuk
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevIosif Itkin
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кода
Tatyanazaxarova
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Python Meetup
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
Alexey Paznikov
 
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupКак не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Mail.ru Group
 
20100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-0320100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-03Computer Science Club
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
Tech Talks @NSU
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
 
Развитие технологий генерации эксплойтов на основе анализа бинарного кода
Развитие технологий генерации эксплойтов на основе анализа бинарного кодаРазвитие технологий генерации эксплойтов на основе анализа бинарного кода
Развитие технологий генерации эксплойтов на основе анализа бинарного кодаPositive Hack Days
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Mikhail Kurnosov
 
200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя:опыт статического анализа исходного кода200 open source проектов спустя:опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кода
Positive Hack Days
 
200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кода200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кода
Andrey Karpov
 
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)Mikhail Kurnosov
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Yandex
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonovComputer Science Club
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20
DefconRussia
 

Similar to Автоматизированная разработка генераторов тестовых программ для микропроцессоров на примере MIPS (20)

Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry Zaitsev
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кода
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupКак не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
 
20100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-0320100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-03
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
Развитие технологий генерации эксплойтов на основе анализа бинарного кода
Развитие технологий генерации эксплойтов на основе анализа бинарного кодаРазвитие технологий генерации эксплойтов на основе анализа бинарного кода
Развитие технологий генерации эксплойтов на основе анализа бинарного кода
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
 
200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя:опыт статического анализа исходного кода200 open source проектов спустя:опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кода
 
200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кода200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кода
 
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20
 

More from CEE-SEC(R)

Подбор и адаптация методологий разработки ПО под различные типы производствен...
Подбор и адаптация методологий разработки ПО под различные типы производствен...Подбор и адаптация методологий разработки ПО под различные типы производствен...
Подбор и адаптация методологий разработки ПО под различные типы производствен...
CEE-SEC(R)
 
Проектный офис и аналитик
Проектный офис и аналитикПроектный офис и аналитик
Проектный офис и аналитик
CEE-SEC(R)
 
Онлайн-революция: от ранних репозиториев – к современным МООС-курсам
Онлайн-революция: от ранних репозиториев – к современным МООС-курсамОнлайн-революция: от ранних репозиториев – к современным МООС-курсам
Онлайн-революция: от ранних репозиториев – к современным МООС-курсам
CEE-SEC(R)
 
Массовый параллелизм для гетерогенных вычислений на C++ для беспилотных автом...
Массовый параллелизм для гетерогенных вычислений на C++ для беспилотных автом...Массовый параллелизм для гетерогенных вычислений на C++ для беспилотных автом...
Массовый параллелизм для гетерогенных вычислений на C++ для беспилотных автом...
CEE-SEC(R)
 
Как компании с вузами вместе ИТ специалиста готовили или Чем ИТ компания може...
Как компании с вузами вместе ИТ специалиста готовили или Чем ИТ компания може...Как компании с вузами вместе ИТ специалиста готовили или Чем ИТ компания може...
Как компании с вузами вместе ИТ специалиста готовили или Чем ИТ компания може...
CEE-SEC(R)
 
«Знак качества» как инструмент анализа восприятия продукта клиентами
«Знак качества» как инструмент анализа восприятия продукта клиентами«Знак качества» как инструмент анализа восприятия продукта клиентами
«Знак качества» как инструмент анализа восприятия продукта клиентами
CEE-SEC(R)
 
Машинное обучение на каждый день
Машинное обучение на каждый деньМашинное обучение на каждый день
Машинное обучение на каждый день
CEE-SEC(R)
 
Process и Case Management в информационной системе:
Process и Case Management в информационной системе: Process и Case Management в информационной системе:
Process и Case Management в информационной системе:
CEE-SEC(R)
 
Проблемы процесса разработки с точки зрения тестирования
Проблемы процесса разработки с точки зрения тестированияПроблемы процесса разработки с точки зрения тестирования
Проблемы процесса разработки с точки зрения тестирования
CEE-SEC(R)
 
Как ЧПУ станку в домашней мастерской не превратиться в мульт героев “двое из ...
Как ЧПУ станку в домашней мастерской не превратиться в мульт героев “двое из ...Как ЧПУ станку в домашней мастерской не превратиться в мульт героев “двое из ...
Как ЧПУ станку в домашней мастерской не превратиться в мульт героев “двое из ...
CEE-SEC(R)
 
Ай-трекинг в UX исследованиях
Ай-трекинг в UX исследованияхАй-трекинг в UX исследованиях
Ай-трекинг в UX исследованиях
CEE-SEC(R)
 
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
CEE-SEC(R)
 
Технологичный подход к повышению продуктивности – кейсы и исследования
Технологичный подход к повышению продуктивности – кейсы и исследованияТехнологичный подход к повышению продуктивности – кейсы и исследования
Технологичный подход к повышению продуктивности – кейсы и исследования
CEE-SEC(R)
 
Субъектно-ориентированные информационные системы на предприятиях
Субъектно-ориентированные информационные системы на предприятияхСубъектно-ориентированные информационные системы на предприятиях
Субъектно-ориентированные информационные системы на предприятиях
CEE-SEC(R)
 
Шаблоны контейнеров в Virtuozzo
Шаблоны контейнеров в VirtuozzoШаблоны контейнеров в Virtuozzo
Шаблоны контейнеров в Virtuozzo
CEE-SEC(R)
 
Apache Storm: от простого приложения до подробностей реализации
Apache Storm: от простого приложения до подробностей реализацииApache Storm: от простого приложения до подробностей реализации
Apache Storm: от простого приложения до подробностей реализации
CEE-SEC(R)
 
Семантическое ядро рунета
Семантическое ядро рунетаСемантическое ядро рунета
Семантическое ядро рунета
CEE-SEC(R)
 
Разработка требований для противоречащих законодательств
Разработка требований для противоречащих законодательствРазработка требований для противоречащих законодательств
Разработка требований для противоречащих законодательств
CEE-SEC(R)
 
IT-Лаборатория: кузница кадров и стартапов
IT-Лаборатория: кузница кадров и стартаповIT-Лаборатория: кузница кадров и стартапов
IT-Лаборатория: кузница кадров и стартапов
CEE-SEC(R)
 
Законы создания IT команд и следствия законов для IT проектов «на пальцах»
Законы создания IT команд и следствия законов для IT проектов «на пальцах»Законы создания IT команд и следствия законов для IT проектов «на пальцах»
Законы создания IT команд и следствия законов для IT проектов «на пальцах»
CEE-SEC(R)
 

More from CEE-SEC(R) (20)

Подбор и адаптация методологий разработки ПО под различные типы производствен...
Подбор и адаптация методологий разработки ПО под различные типы производствен...Подбор и адаптация методологий разработки ПО под различные типы производствен...
Подбор и адаптация методологий разработки ПО под различные типы производствен...
 
Проектный офис и аналитик
Проектный офис и аналитикПроектный офис и аналитик
Проектный офис и аналитик
 
Онлайн-революция: от ранних репозиториев – к современным МООС-курсам
Онлайн-революция: от ранних репозиториев – к современным МООС-курсамОнлайн-революция: от ранних репозиториев – к современным МООС-курсам
Онлайн-революция: от ранних репозиториев – к современным МООС-курсам
 
Массовый параллелизм для гетерогенных вычислений на C++ для беспилотных автом...
Массовый параллелизм для гетерогенных вычислений на C++ для беспилотных автом...Массовый параллелизм для гетерогенных вычислений на C++ для беспилотных автом...
Массовый параллелизм для гетерогенных вычислений на C++ для беспилотных автом...
 
Как компании с вузами вместе ИТ специалиста готовили или Чем ИТ компания може...
Как компании с вузами вместе ИТ специалиста готовили или Чем ИТ компания може...Как компании с вузами вместе ИТ специалиста готовили или Чем ИТ компания може...
Как компании с вузами вместе ИТ специалиста готовили или Чем ИТ компания може...
 
«Знак качества» как инструмент анализа восприятия продукта клиентами
«Знак качества» как инструмент анализа восприятия продукта клиентами«Знак качества» как инструмент анализа восприятия продукта клиентами
«Знак качества» как инструмент анализа восприятия продукта клиентами
 
Машинное обучение на каждый день
Машинное обучение на каждый деньМашинное обучение на каждый день
Машинное обучение на каждый день
 
Process и Case Management в информационной системе:
Process и Case Management в информационной системе: Process и Case Management в информационной системе:
Process и Case Management в информационной системе:
 
Проблемы процесса разработки с точки зрения тестирования
Проблемы процесса разработки с точки зрения тестированияПроблемы процесса разработки с точки зрения тестирования
Проблемы процесса разработки с точки зрения тестирования
 
Как ЧПУ станку в домашней мастерской не превратиться в мульт героев “двое из ...
Как ЧПУ станку в домашней мастерской не превратиться в мульт героев “двое из ...Как ЧПУ станку в домашней мастерской не превратиться в мульт героев “двое из ...
Как ЧПУ станку в домашней мастерской не превратиться в мульт героев “двое из ...
 
Ай-трекинг в UX исследованиях
Ай-трекинг в UX исследованияхАй-трекинг в UX исследованиях
Ай-трекинг в UX исследованиях
 
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
 
Технологичный подход к повышению продуктивности – кейсы и исследования
Технологичный подход к повышению продуктивности – кейсы и исследованияТехнологичный подход к повышению продуктивности – кейсы и исследования
Технологичный подход к повышению продуктивности – кейсы и исследования
 
Субъектно-ориентированные информационные системы на предприятиях
Субъектно-ориентированные информационные системы на предприятияхСубъектно-ориентированные информационные системы на предприятиях
Субъектно-ориентированные информационные системы на предприятиях
 
Шаблоны контейнеров в Virtuozzo
Шаблоны контейнеров в VirtuozzoШаблоны контейнеров в Virtuozzo
Шаблоны контейнеров в Virtuozzo
 
Apache Storm: от простого приложения до подробностей реализации
Apache Storm: от простого приложения до подробностей реализацииApache Storm: от простого приложения до подробностей реализации
Apache Storm: от простого приложения до подробностей реализации
 
Семантическое ядро рунета
Семантическое ядро рунетаСемантическое ядро рунета
Семантическое ядро рунета
 
Разработка требований для противоречащих законодательств
Разработка требований для противоречащих законодательствРазработка требований для противоречащих законодательств
Разработка требований для противоречащих законодательств
 
IT-Лаборатория: кузница кадров и стартапов
IT-Лаборатория: кузница кадров и стартаповIT-Лаборатория: кузница кадров и стартапов
IT-Лаборатория: кузница кадров и стартапов
 
Законы создания IT команд и следствия законов для IT проектов «на пальцах»
Законы создания IT команд и следствия законов для IT проектов «на пальцах»Законы создания IT команд и следствия законов для IT проектов «на пальцах»
Законы создания IT команд и следствия законов для IT проектов «на пальцах»
 

Автоматизированная разработка генераторов тестовых программ для микропроцессоров на примере MIPS

  • 1. XII международная конференция CEE-SECR / РАЗРАБОТКА ПО 28 - 29 октября, Москва Александр Камкин Автоматизированная разработка генераторов тестовых программ для микропроцессоров на примере MIPS Институт системного программирования РАН
  • 2. Это генератор тестовых программ Модель или прототип (HDL, FPGA) lui a0, 0xdead ori a0, a0, 0x0 lui a1, 0xbeef ori a1, a1, 0xf add t0, a0, a1 sub t1, a0, t1 add t0, t0, t1 Тестовые программы (ASM) Эталонный симулятор (C/C++, SystemC) Трассы исполнения (Tarmac) 0x2000: lui ... 0x2004: ori ... 0x2008: lui ... 0x200c: ori ... 0x2010: add ... 0x2014: sub ... 0x2018: add ... Компаратор трасс (Perl, Python) 0x2000: lui ... 0x2004: ori ... 0x2008: lui ... 0x200c: ori ... 0x2010: add ... 0x2014: sub ... 0x2018: bug ... 2
  • 3. LABEL_4: lw $2,8($fp) lw $3,28($fp) sltu $2,$2,$3 bne $2,$0,$L5 nop lw $2,12($fp) addiu $2,$2,1 sw $2,12($fp) LABEL_2: lw $3,12($fp) lw $2,28($fp) addiu $2,$2,-1 sltu $2,$3,$2 bne $2,$0,$L3 nop move $sp,$fp lw $fp,16($sp) addiu $sp,$sp,24 j $31 nop Как его разработать? LABEL_8: lw $2,12($fp) sll $2,$2,3 move $3,$2 lw $2,24($fp) addu $2,$3,$2 ldc1 $f0,0($2) sdc1 $f0,0($fp) lw $2,12($fp) sll $2,$2,3 move $3,$2 lw $2,24($fp) addu $4,$3,$2 lw $2,8($fp) sll $2,$2,3 move $3,$2 lw $2,24($fp) addu $2,$3,$2 ldc1 $f0,0($2) sdc1 $f0,0($4) lw $2,8($fp) sll $2,$2,3 move $3,$2 lw $2,24($fp) addu $2,$3,$2 ldc1 $f0,0($fp) sdc1 $f0,0($2) LABEL_6: lw $2,8($fp) addiu $2,$2,1 sw $2,8($fp) TEST_PROGRAM: addiu $sp,$sp,-24 sw $fp,16($sp) move $fp,$sp sw $4,24($fp) sw $5,28($fp) sw $0,12($fp) j LABEL_2 nop LABEL_3: lw $2,12($fp) addiu $2,$2, 1 sw $2,8($fp) j LABEL_4 nop LABEL_5: lw $2,12($fp) sll $2,$2,3 move $3,$2 lw $2,24($fp) addu $2,$3,$2 ldc1 $f2,0($2) lw $2,8($fp) sll $2,$2,3 move $3,$2 lw $2,24($fp) addu $2,$3,$2 ldc1 $f0,0($2) c.lt.d $f0,$f2 nop bc1t LABEL_8 nop j LABEL_6 nop 3 Руководство по системе команд Параметры генерации (шаблон)  Последовательности команд  Ограничения на данные  Распределения вероятностей  и т.д. и т.п.
  • 4. Если только синтаксис  Нарушение предусловий: UNPREDICTABLE  Обращения к неинициализированным данным  Переходы назад могут вызвать зацикливания  Низкая вероятность возникновения corner-cases  Невозможность создания self-checking тестов 4
  • 5. Нужно учитывать семантику 5 Генератор на базе MicroTESK Спецификации Транслятор Тестовые шаблоны lui a0, 0xdead ori a0, a0, 0x0 lui a1, 0xbeef ori a1, a1, 0xf add t0, a0, a1 sub t1, a0, t1 add t0, t0, t1 Тестовые программы Модель процессора Ядро генератора
  • 6. type DWORD = card(64) reg GPR [32, DWORD] op ADD(rd: R, rs: R, rt: R) image = format("0000%5s%5s%5s0000100000", rs.image, rt.image, rd.image) syntax = format("add %s, %s, %s", rd.syntax, rs.syntax, rt.syntax) action = { if (NotWordValue(rs) || NotWordValue(rt)) then unpredictable; endif; temp = rs<31>::rs<31..0> + rs<31>::rt<31..0>; if (temp<32> != temp<31>) then exception("IntegerOverflow"); else rd = sign_extend(DWORD, temp<31..0>); endif; } Спецификации на nML 6 Спецификация mode R (i: card(5)) = GPR[i] syntax = format("r%d", i) image = format("%5s", i) action = { ... } Регистры Команды Режимы доступа
  • 7. Шаблоны на Ruby 7 class MyTemplate < Template def initialize ... end def pre ... end def post ... end def run block(:combinator => 'product') { iterate { add t0, t1, t2 do situation('Normal') end add t0, t1, t2 do situation('IntegerOverflow') end } iterate { sub t3, t4, t5 do situation('Normal') end sub t3, t4, t5 do situation('IntegerOverflow') end } }.run end end lui r9, 0x858d ori r9, r9, 0xc02e lui r10, 0x58d2 ori r10, r10, 0x7219 lui r12, 0x898a ori r12, r12, 0x49b7 lui r13, 0x0f31 ori r13, r13, 0xc65a add r8, r9, r10 sub r11, r12, r13 Всего 2 × 2 = 4 варианта Пролог / эпилог Ассемблер Всякие “фишки” Инициализирующий код Тестовое воздействие
  • 8. Заключение  Высокая автоматизация на базе спецификаций  Гибкая настройка на разные архитектуры  Расширяемость  Поддержка MIPS  Open source  Применяется в реальных проектах 8 Архитектура MIPS Число команд 250 из 320 Объем nML спецификаций 4.5 KLOC Трудоемкость 4 чел.-мес.
  • 9. Будущее MicroTESK  Online-генерация тестовых программ  Генерация симуляторов  Оценка тестового покрытия  Настраиваемая компиляция  Верификация ПО с учетом целевой архитектуры 9