The OpenNET Project / Index page

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



"Тематический каталог: От C к Ассемблеру (gcc assembler)"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Тематический каталог: От C к Ассемблеру (gcc assembler)"  +/
Сообщение от auto_topic (?), 19-Авг-05, 13:13 
Обсуждение статьи тематического каталога: От C к Ассемблеру (gcc assembler)

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от chorikemail (?), 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ообщить модератору

2. Сообщение от кирогазов (?), 28-Июл-11, 17:39   +/
феноменально! листинги 11 и 12 раздвигают рамки понятия "идиотский" до невообразимых пределов. это надо было додуматься сделать двойной цикл там где можно обойтись 2 вычитаниями и одним сдвигом.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5

3. Сообщение от Аноним (-), 28-Дек-12, 09:31   +/
Отличная статья.
Ответить | Правка | Наверх | Cообщить модератору

4. Сообщение от Алексейemail (??), 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;
}

Ответить | Правка | Наверх | Cообщить модератору

5. Сообщение от APh (?), 17-Май-21, 19:58   +/
Уважаемый кирогазов,
Вы, как и многие, путаете цели и путаетесь в необходимых для них средствах.

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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