URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 12035
[ Назад ]

Исходное сообщение
"Тематический каталог: От C к Ассемблеру (gcc assembler)"

Отправлено auto_topic , 19-Авг-05 13:13 
Обсуждение статьи тематического каталога: От C к Ассемблеру (gcc assembler)

Ссылка на текст статьи: https://www.opennet.ru/base/dev/from_c_to_asm.txt.html


Содержание

Сообщения в этом обсуждении
"От C к Ассемблеру (gcc assembler)"
Отправлено chorik , 19-Авг-05 13:13 
Rules !!!
я так смотрел - да вроде неплохо !
,но не стоит так уж жeстко писать и использовать asm где попало !!!
Учитывая всякие исключения, прерывания и schedule of procceses нужно изьавляться от этого всего.
Жаль root не всемогущ (относительно asm instruction)/*если не так то напишите - может я чего не еще не узнал*/

для таких замеров самая рульная ось - MS-DOS или unix-подобные но {как я сделал дописал kernel и ВСУНУЛ ТУДА read 64-bit TSC/* это когда я оптимизировал string.h */}

By !!!


"От C к Ассемблеру (gcc assembler)"
Отправлено кирогазов , 28-Июл-11 17:39 
феноменально! листинги 11 и 12 раздвигают рамки понятия "идиотский" до невообразимых пределов. это надо было додуматься сделать двойной цикл там где можно обойтись 2 вычитаниями и одним сдвигом.

"От C к Ассемблеру (gcc assembler)"
Отправлено APh , 17-Май-21 19:58 
Уважаемый кирогазов,
Вы, как и многие, путаете цели и путаетесь в необходимых для них средствах.

Цель статьи — введение в ассемблерные вставки, а не обучение достижению оптимального кода.

Учебный пример ставит своей задачей демонстрацию каких-то элементарных особенностей обсуждаемого инструментария, а не создание самого быстрого кода на Земле, при этом малопонятного даже продвинутым.

Впрочем, лет через 20 юношеский максимализм и снобизм, который свойственен тем, кто сам только позавчера что-то узнал и уже с высока поглядывет на остальных, пройдёт...


"От C к Ассемблеру (gcc assembler)"
Отправлено Аноним , 28-Дек-12 09:31 
Отличная статья.

"От 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;
}