Ассемблерные вставки.
От: ssyrik  
Дата: 08.04.08 15:33
Оценка:
Здраствуйте. У меня есть нестандартная проблема.
Мне нужно в текст программы на с++ вставить ассемблерную вставку. А если быть точнее, то стандартные функции strcmp, strcpy и strlen.
Помогите это реализовать.
Re: Ассемблерные вставки.
От: Sergey Chadov Россия  
Дата: 08.04.08 17:54
Оценка:
Здравствуйте, ssyrik, Вы писали:

S>Здраствуйте. У меня есть нестандартная проблема.

S>Мне нужно в текст программы на с++ вставить ассемблерную вставку. А если быть точнее, то стандартные функции strcmp, strcpy и strlen.
S>Помогите это реализовать.
А проблема-то в чем?
Если вставить ассемблерную вставку в код, то это вот так:
asm{
    xor eax,eax
    mov eax,[eax]
}


Если релизоавть strcpy, то это зависит от многих факторов, в частности под какой процессор и какие требования. В простейшем варианте(x86) это что-то типа:
asm{
    cld
    mov esi,src
    mov edi,dest
    mov ecx,-1
    repnz movsb
}

WARNING: очень неэффективно, в реальности по вопросам копирования блоков памяти написаны целые главы
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[2]: Ассемблерные вставки.
От: ssyrik  
Дата: 08.04.08 17:59
Оценка:
Ну первоначально идея состояла в том, чтобы вставить уже написаные файлы из библиотек.
Но я уже бросил заниматься этим.
Написал обычную функцию того же сравнения строк.
Дизассемблировал.
Оптимизировал.
И все прекрасно работает.
Просто преподаватель странный. Я ему показываю, что функция написана на ассемблере, просто в коде ее нету, а он мне говорит, что ему нужно, чтобы он видел эту функцию в самой программе.

Всем спасибо. Вопрос отпал.
Re[3]: Ассемблерные вставки.
От: K13 http://akvis.com
Дата: 09.04.08 04:17
Оценка:
S>Написал обычную функцию того же сравнения строк.
S>Дизассемблировал.
S>Оптимизировал.
S>И все прекрасно работает.

А в чем сакральный смысл именно ассемблера вместо обычного Си-кода?
Re[4]: Ассемблерные вставки.
От: ssyrik  
Дата: 09.04.08 04:37
Оценка:
K13>А в чем сакральный смысл именно ассемблера вместо обычного Си-кода?

Как бы это смешно не казалось, но никакого.
У меня стоит задание на курсовую — разработка транслятора подмножества команд ассемблера. Ну я и написал.
А как потом оказалось, половина кода должна быть именно на ассемблере. Сколько бы я не возмущался, меня заставили переделывать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.