Взаимодействие C/C++ и языка ассемблера. Дан текст (последовательность символов), содержащий не более 100 элементов. Признаком конца текста считается символ с кодом '\0'. Требуется:
- ввести текст с клавиатуры и записать его в память ЭВМ;
- определить, обладает ли этот текст заданным свойством, указанным в вашем варианте задания;
- преобразовать текст по правилу 1 вашего задания, если он обладает заданным свойством, и по правилу 2 в противном случае;
- вывести на экран исходный и преобразованный тексты, а также номер и формулировку применённого правила.
Требования к программе
- Ввод и вывод, выделение памяти, тестовая оснастка и логика выбора действий реализуются на языке C/C++.
- Действия: проверка свойства, применение правила №1 и правила №2 преобразования текста, –– реализуются на языке ассемблера для архитектуры Intel x86_64 в синтаксисе AT&T. Каждое действие следует разместить в отдельном модуле (файле). Реализация действия может состоять из нескольких функций (процедур). Формулировки свойства текста и правил его преобразования для вашего варианта следует разместить в комментариях соответствующих модулей (в начале файла).
- Вывод исходного текста должен быть выполнен сразу после ввода, до анализа и преобразования.
- Вывод преобразованного текста должен быть выполнен только после завершения преобразования.
- Программа должна сохранять работоспособность при любых входных данных.
- Необходимо разработать «тестовую оснастку» для выполнения автоматического тестирования.
Варианты выдаются преподавателем.
Свойство текста:
Текст начинается строчной латинской буквой и оканчивается строчной латинской буквой.
Правило 1:
Инвертировать регистр латинских букв.
Правило 2:
Удалить из текста все повторные вхождения его последнего символа.
- Результатом сборки являются 4 исполняемых файла:
test_c.exe,main_c.exe- с постфиксом_c(референсная версия написанная на C и C++, на которую я опирался, когда писал ассемблерный код),test_s.cpp,main_s.cpp- с постфиксом_s(версия, которая как раз и требовалась по заданию). - В файле
str.sреализованна требуемая функция на ассемблере (версия на C в файлеstr.c). - В файле
test_s.cppтестируется функция, обрабатывающая си-строкуprocess_cstring. Цель в CMakeLists.txttest_s. - В файле
main_s.cppсодержится реализация требуемуемой функции (я ее назвалthe_programm). Цель --main_s. На вход программыmain_s.exeподается строка (введенная вручную или с помощью перенаправления потоков из файла./bin/main_s.exe < ./test_strings.txt), на выводе исходная и преоброзованная строка.