The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"От C к Ассемблеру (gcc assembler)"
Отправлено Алексей, 30-Дек-12 22:57 
Вот два моих примера по-копированию строки, работает как обычная
Си-библиотечная функция strcpy, только работает на 15%-быстрее, тестировал функцией WinAPI: QueryPerformanceCounter которая не участвует в планирование и время не считает при переключений контекстов, но windows система не реального времени точных результатов всё равно не получить, ну хоть приблизительно.


//На синтаксисе AT&T компилятор GCC.

#include <stdio.h>


char* _strcpy(char* _s, const char* _d) {
  char* t = _s;
  asm("movl %0, %%esi"::"d"(_d));
  asm("movl %0, %%edi"::"d"(_s));
  asm("n:");
  asm("mov (%esi), %al");
  asm("mov %al, (%edi)");
  asm("or $0, %al");
  asm("jz e;");
  asm("incl %esi");
  asm("incl %edi");
  asm("jmp n;");
  asm("e:");
  return t;
}


int main(void) {
  char s[64];
  _strcpy(s, "Hello GCC from syntaxis AT&T");
  puts(s);
  return 0;
}


***********************************************************************


//На синтаксисе INTEL компилятор Borland C.

#include <stdio.h>


char* _strcpy(char* _s, const char* _d) {
  char* t = _s;
  __asm {
      mov esi, _d
      mov edi, _s
      n:
      mov al, [esi]
      mov [edi], al
      or al, 0
      jz e;
      inc esi
      inc edi
      jmp n;
      e:
  };
  return t;
}


int main(void) {
  char s[64];
  _strcpy(s, "Hello Borland C from syntaxis INTEL");
  puts(s);
  return 0;
}

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру