IPB

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V  < 1 2 3 4 >  
Ответить в эту темуОткрыть новую тему
> Человек, который живет ASSEMBLERом
исчезающий.point
сообщение 14.8.2004, 10:25
Сообщение #51





Гости





а можно я на си перепешу так, чтобы было быстрее? и ещё, если займётся этим ermsoft, то ему понадобится программка показывающая то, какой код максимально быстро выполняет деление на константу. когда понадобится, жду адрес почтовый в ЛС. так... а вот в ассемблер ему лучше вот что преобразовывать. (щаз напишу).
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
исчезающий.point
сообщение 14.8.2004, 10:57
Сообщение #52





Гости





CODE


#include <stdio.h>



static char x[ 11 ] = {

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

};



char * toString( long n ) {

long m;

char * p;

char t;



p = x + sizeof( x ) - 2;



m = n >> 31;

m = ( n ^ m ) - m;



do {

 *p  = m % 10 + '0';

 p -= 1;

} while( m /= 10 );



t = '-';

if( n > 0 ) {

 t = ' ';

}



*p = t;



return p;

}



int main( unsigned counter, char ** vector ) {

printf( "%sn", toString( -41 ) );

return 0;

}





вот. тут модуль вычисляется более эффективно. и последний if компилятор может заменить на cmovne. без ветвлений будет быстрей работать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Plazmid
сообщение 14.8.2004, 18:09
Сообщение #53





Группа: Пользователи
Регистрация: 2.1.2004
Из: Уралмаш
Пользователь №: 1 413



QUOTE(buggzy)
а зачем может понабобиться быстро выполнять преобразование в человекочитаемое значение? человек всяко медленее читает, чем любой алгоритм преобразования работает... по-моему, тут дизайн программы менять надо.

Дизайн? huh.gif
как может дизайн влиять на процедуру преобразования?
существует программа, перед тем, как вывести на экран, она решает круг задач и после этого выводит, сразу (где изменения были).

я дизайн уж не как не могу привязать к этому алгоритму, ткни пальцем, чего менять? и с чего бы это вдруг замена дизайна увеличит скорость вывода на экран?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Plazmid
сообщение 14.8.2004, 18:11
Сообщение #54





Группа: Пользователи
Регистрация: 2.1.2004
Из: Уралмаш
Пользователь №: 1 413



[quote=исчезающий.point]вот. тут модуль вычисляется более эффективно. и последний if компилятор может заменить на cmovne. без ветвлений будет быстрей работать.[/quote]
Вечером буду тестировать!
спасибо.
:kissgirl:
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
исчезающий.point
сообщение 14.8.2004, 18:19
Сообщение #55





Гости





тока это. что хотел сказать. если компилируешь под windows, то long - это 4 байта. а не 8. 8 байтов - это long long. вот. ну и соответсвенно, если хочешь модуль для восьмибайтовых знаковых вычислять, то нужно использовать n >> 63, а не >> 31
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
исчезающий.point
сообщение 14.8.2004, 19:38
Сообщение #56





Гости





вобщем воть. нарыл : - ).

1. училка писания быстрого деления. (к сожалению остаток не выдаёт)
http://point.web.ur.ru/code/division.c

2. кусок хардкорного программирования на ассемблере : - ). сами понимаете для чего.
http://point.web.ur.ru/code/binary2ascii.c

кстать. очень полезно для общего развития : - ). как они там делят и остатки берут.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
buggzy
сообщение 15.8.2004, 10:25
Сообщение #57





Группа: Пользователи
Регистрация: 20.4.2004
Из: из дома
Пользователь №: 1 915



[quote=Plazmid][quote=buggzy]а зачем может понабобиться быстро выполнять преобразование в человекочитаемое значение? человек всяко медленее читает, чем любой алгоритм преобразования работает... по-моему, тут дизайн программы менять надо.[/quote]
Дизайн? huh.gif
как может дизайн влиять на процедуру преобразования?
существует программа, перед тем, как вывести на экран, она решает круг задач и после этого выводит, сразу (где изменения были).

я дизайн уж не как не могу привязать к этому алгоритму, ткни пальцем, чего менять? и с чего бы это вдруг замена дизайна увеличит скорость вывода на экран?[/quote] допустим, тебе надо вывести на экран 1000 чисел (больше вряд ли имеет смысл из соображений читаемости). если ты будешь преобразовывать их из бинарного представления в строковое sprintf-ом, то это займет примерно 0.005 секунд. и какой бы ты супер-пупер мегакрутой алгоритм не использовал вместо sprintf, больше, чем 0.005 секунд на выводе каждой страницы, ты выиграть не сможешь... оно тебе надо?

а про дизайн я речь завел в надежде, что вышенаписанное для тебя очевидно.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Plazmid
сообщение 16.8.2004, 08:16
Сообщение #58





Группа: Пользователи
Регистрация: 2.1.2004
Из: Уралмаш
Пользователь №: 1 413



[quote=buggzy]а про дизайн я речь завел в надежде, что вышенаписанное для тебя очевидно.[/quote]
biggrin.gif
я же не последовательно вывожу, представляешь, на экране юзер видит, как цифры выводяться одна за другой? ужас. :ohmy:

это именно внутренняя обработка, до вывода на экран.

Грубо говоря, готовится картинка в буфере, и затем разом вся помещается на экран.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
buggzy
сообщение 16.8.2004, 09:30
Сообщение #59





Группа: Пользователи
Регистрация: 20.4.2004
Из: из дома
Пользователь №: 1 915



Доброе время суток!

[quote=Plazmid][quote=buggzy]а про дизайн я речь завел в надежде, что вышенаписанное для тебя очевидно.[/quote]
Грубо говоря, готовится картинка в буфере, и затем разом вся помещается на экран.[/quote]

Я до сих пор не понимаю, из каких соображений ты хочешь оптимизировать форматирование цифр. Если внутренняя обработка готовит данные для одной страницы, то больше тысячи цифр за раз форматировать не придется, и форматирование sprintf-ом будет занимать те самые тысячные доли секунды, и ничего ты там не выиграешь, а если более чем для одной - это и есть тот самый кривой дизайн, от которого я советовал избавиться.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
buggzy
сообщение 16.8.2004, 17:12
Сообщение #60





Группа: Пользователи
Регистрация: 20.4.2004
Из: из дома
Пользователь №: 1 915



[quote]читай мнение ниже. я же не говорю, что костьми за неё надо ложится. просто если можно сделать эффективнее и с небольшими усилиями, почему бы и не сделать?[/quote] Меня просто удивило твое согласие с намерением Plazmid бороться за 0 процентов оптимизации ценой часов программистского труда (здесь 0 - достаточно хорошее приближение, т.к. отличие от нуля не превышает погрешность измерения)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
исчезающий.point
сообщение 16.8.2004, 19:33
Сообщение #61





Гости





[quote=buggzy][quote]читай мнение ниже. я же не говорю, что костьми за неё надо ложится. просто если можно сделать эффективнее и с небольшими усилиями, почему бы и не сделать?[/quote] Меня просто удивило твое согласие с намерением Plazmid бороться за 0 процентов оптимизации ценой часов программистского труда (здесь 0 - достаточно хорошее приближение, т.к. отличие от нуля не превышает погрешность измерения)[/quote] эЭ? моё согласие? :verysad: опять за меня придумывают. я вообще этой теме параллелен. : - ). меня интересует чисто оптимизация и всё. а где и как она применятеся - это уже дело применяющих.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Plazmid
сообщение 18.8.2004, 02:33
Сообщение #62





Группа: Пользователи
Регистрация: 2.1.2004
Из: Уралмаш
Пользователь №: 1 413



[quote=buggzy]Я до сих пор не понимаю, из каких соображений ты хочешь оптимизировать форматирование цифр. Если внутренняя обработка готовит данные для одной страницы, то больше тысячи цифр за раз форматировать не придется, и форматирование sprintf-ом будет занимать те самые тысячные доли секунды, и ничего ты там не выиграешь, а если более чем для одной - это и есть тот самый кривой дизайн, от которого я советовал избавиться.[/quote]
О! Боже!
цель ведь не оптимизация sprintf...
цель - в оптимизации процедуры или подпрограммы (называйте как хотите), небольшого участка, некоторого алгоритма.
Возможно мы думаем о разных вещах? Я тоже тебя не могу понять.

Зачем здесь рассказывать о том, что и как я вывожу? да побарабану всем. Я лишь выкладываю маленький кусочек, который можно оптимизировать, переведя на asm.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Plazmid
сообщение 18.8.2004, 02:35
Сообщение #63





Группа: Пользователи
Регистрация: 2.1.2004
Из: Уралмаш
Пользователь №: 1 413



[quote=исчезающий.point]а где и как она применятеся - это уже дело применяющих.[/quote]
вот-вот, простой кусок алгоритма, кстати который можно будет применять в любых проектах, т.к. он написан на asm-е.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
buggzy
сообщение 18.8.2004, 03:16
Сообщение #64





Группа: Пользователи
Регистрация: 20.4.2004
Из: из дома
Пользователь №: 1 915



[quote=Plazmid]цель - в оптимизации процедуры или подпрограммы (называйте как хотите), небольшого участка, некоторого алгоритма.
Возможно мы думаем о разных вещах? Я тоже тебя не могу понять.[/quote] У нас цели разные. Я стремлюсь более качественную с точки зрения пользователя программу сделать. А ты, извини, играешься, хочешь почувствовать себя элитой или не знаю, что там обычно движет Людьми, Живушими Ассемблером. Естественно, что у разных целей - разные способы достижения. Моя цель оптимизацией форматирования недостижима. Твоя - наверняка достижима. Но я ничем не могу в этом тебе помочь. Ошибкой было не распознать это сразу и вмешаться в обсуждение.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Plazmid
сообщение 18.8.2004, 03:45
Сообщение #65





Группа: Пользователи
Регистрация: 2.1.2004
Из: Уралмаш
Пользователь №: 1 413



[quote=buggzy]Не в любых. Но можно. А нужно ли? Впрочем, если очень хочется...[/quote]
это простые алгоритмы.
[quote] У нас цели разные. Я стремлюсь более качественную с точки зрения пользователя программу сделать. А ты, извини, играешься, хочешь почувствовать себя элитой или не знаю, что там обычно движет Людьми, Живушими Ассемблером. Естественно, что у разных целей - разные способы достижения. Моя цель оптимизацией форматирования недостижима. Твоя - наверняка достижима. Но я ничем не могу в этом тебе помочь. Ошибкой было не распознать это сразу и вмешаться в обсуждение.[/quote]
Ладно, будем считать, что я мазахист и трачу в пустую силы на оптимизацию.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
buggzy
сообщение 18.8.2004, 04:03
Сообщение #66





Группа: Пользователи
Регистрация: 20.4.2004
Из: из дома
Пользователь №: 1 915



[quote=Plazmid][quote] У нас цели разные. Я стремлюсь более качественную с точки зрения пользователя программу сделать. А ты, извини, играешься, хочешь почувствовать себя элитой или не знаю, что там обычно движет Людьми, Живушими Ассемблером. Естественно, что у разных целей - разные способы достижения. Моя цель оптимизацией форматирования недостижима. Твоя - наверняка достижима. Но я ничем не могу в этом тебе помочь. Ошибкой было не распознать это сразу и вмешаться в обсуждение.[/quote]
Ладно, будем считать, что я мазахист и трачу в пустую силы на оптимизацию.[/quote] Угу. Сидишь, по кнопкам стучишь, жене спать мешаешь... И ладно бы толк с этого был какой... Ты слушай дядю буггзи, он граблей столько пообступал - на полторы жизни хватит smile.gif В тои числе и со стучанием клавы по ночам smile.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Plazmid
сообщение 18.8.2004, 05:52
Сообщение #67





Группа: Пользователи
Регистрация: 2.1.2004
Из: Уралмаш
Пользователь №: 1 413



[quote=buggzy]Угу. Сидишь, по кнопкам стучишь, жене спать мешаешь... И ладно бы толк с этого был какой... Ты слушай дядю буггзи, он граблей столько пообступал - на полторы жизни хватит smile.gif В тои числе и со стучанием клавы по ночам smile.gif[/quote]
а это моё, во мне это, по ночам сидеть, клавиши давить. Кстати, клавиши не слышно как нажимаются, даже не слышно щелчков мыши (потому что её нету), и не слышно, как работает моя машина. Супруге своей любимой я спать не мешаю. Я заведомо позаботился об уровне шума. Единственное, когда обращние к винту идет, да и то - редко.

буггзи я слушать не буду, мнение его выслушаю, но слушать - нет уж.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
buggzy
сообщение 18.8.2004, 08:43
Сообщение #68





Группа: Пользователи
Регистрация: 20.4.2004
Из: из дома
Пользователь №: 1 915



Ну-ну... user posted image Ты только не удивляйся, когда она эту тему таки поднимет... :hammer: Лупофь лупофью, но подопнуть мужа, чтобы меньше фигней страдал и на ребенка зарабатывал - это святое.Эти твари (любя) ведь природой запрограммированы стабильность искать. А ассемблер ее почему-тоне дает... Впрочем, пара годиков у тебя, наверное, еще есть smile.gif

з.ы. А почему я не видел бесшумных клавиатур?

moderator mode on
не флеймить!!
moderator mode off

Ха, не смеши меня, "модератор"! Тебя вообще еще не назначили, молчи давай. И вообще, я убежден, что это обсуждение вполне соответствует теме "человек, живующий ассемблером", поскольку затрагивает проблему межличностных взаимоотношений именно таких людей.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
исчезающий.point
сообщение 18.8.2004, 09:47
Сообщение #69





Гости





жена жене рознь - это раз. два - программист программисту - рознь. три - клавы бесшумные есть на ноутбуках от ibm. четыре - ассемблером очень не плохо можно зарабатывать, правда не постоянно. пять - хорошее число : - ).
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Plazmid
сообщение 19.8.2004, 13:26
Сообщение #70





Группа: Пользователи
Регистрация: 2.1.2004
Из: Уралмаш
Пользователь №: 1 413



Если мужу урезать его хобби, интересы. А оставить только работу, а вернее только интересы семьи... нет уж, увольте. Это какое-то рабство с мягкими стенами. Такая семья долго не протянет. Кстати, она почитала эту тему, и я думаю, у меня лет 60-ть еще есть ;-) могу клавиши давить. Да и зачем связывать свою жизнь с женщиной, которая не уважает твоё хобби? вот так мужики и превращаются в алкашей...

на счет клавитур - в сторону ноутбуков смотри.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Yoda
сообщение 22.8.2004, 16:11
Сообщение #71





Группа: Пользователи
Регистрация: 28.8.2003
Из: Центр
Пользователь №: 40



Может забацать чо инть на асме под FreeBSD для работы с вебом ?

1. Классическое программирование (Assembler)
2. Прогрессивно (FreeBSD)
3. Востребовано (WWW)

smile.gif)

А, ну ить, чтоб токо на интелЯх работало (бедные студенты с аМД идутъ нахэр)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
rasla
сообщение 9.4.2011, 04:24
Сообщение #72





Группа: Пользователи
Регистрация: 3.1.2006
Из: Екатеринбург
Пользователь №: 7 649



Тема конечно уже давно ТРУП, но для нынешних новичков немного напомню свежим... запахом blush.gif :
1) НЕ СТОИТ думать, что Ассемблерные вставки в правильных местах смогут существенно улучшить Вашу программу, ведь это является НИЗКОУРОВНЕВОЙ ОПТИМИЗАЦИЕЙ и делается это лишь в крайних случаях и ТОЛЬКО ПОСЛЕ Высоко- и Средне- уровневых оптимизаций! ЗАТО ломают переносимость Исходников (не только между Архитектурами, но даже Компиляторами)!
2) В данном примере "RtlSecureZeroMemory(void *ptr, unsigned long cnt)" существенного прироста производительности удаётся добиться без ассемблерных вставок простым но эффективным решением - объявить тип передачи аргументов через РЕГИСТРЫ процессора:
void __fastcall RtlSecureZeroMemory(void *ptr, unsigned long cnt)
Это тоже не является УНИВЕРСАЛЬНОЙ панацеей, но вот в подобных случаях (мало аргументов, короткие преобразования) результат может быть чрезвычайно-эффективным.
3) современные компиляторы с правильными ключами генерируют весьма неплохой код, ПРИЧЁМ - правильными - совсем не означает "под последний выпущенный процессор".
Советую ознакомиться с текстом - http://www.bog.pp.ru/work/gcc.html
Лично я получаю весьма небольшой, но эффективный, УЗНАВАЕМЫЙ и легко-читаемый в дебагере код в GCC 3.4.5 с флагами:
Код
-O1 -match=i486 -fexpensive-optimizations
-falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1


4) Далеко не всегда последние версии Софта лучше прежних.
Один и тот же исходник (Win32 GUI - самописный будильник со списком заданий и несколькими настраиваемыми параметрами)
я компилировал много раз:
* Visual Studio .NET 2001 - 16kb
* Visual Studio .NET 2003 - 21kb
* Visual Studio 2005 Express Edition - 29kb
* Visual Studio 2008 - 36kb
* GCC 3.4.5 (-O1 -march=i386) - 19kb
* GCC 3.4.5 (-O2 -march=pentium3 ) - 27kb
* GCC 3.4.5 (-O3 -march=pentium4 ) - 35kb
* GCC 4.5.2 (-O1 -march=i386 ) - 23kb
* GCC 4.5.2 (-O2 -march=pentium3 ) - 33kb
* GCC 4.5.2 (-O3 -march=pentium4 ) - 39kb
НО скорость-то работы СОВЕРШЕННО НЕ МЕНЯЛАСЬ!
Зато менялись требования к библиотекам, ДАЖЕ если они нафиг НЕ НУЖНЫ
(Для MS VC - MSVCRTxx, для GCC 4 - libgcc_s_dw2-1.dll).

Так что - "мотайте на ус" и, конечно же, - пробуйте! flower.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MagniD
сообщение 17.4.2011, 04:33
Сообщение #73





Группа: Пользователи
Регистрация: 11.1.2009
Из: Екатеринбург
Пользователь №: 39 259



Давным давно, когда трава была зеленее а "пиздюли" суровее, я программировал для Кворума на процессоре Z80, в частности перевел графический редактор ArtStudio (причем почти как "надмозг") на русский язык, и написал программу "блокнот" имитирующую windows интерфейс, и позволяющую заводить заметки в небольшую бд с сохранением в файл на 720 кб дискету. (и даже защищать файл паролем, который можно было невозбранно прочитать в самом начале файла при открытии его редактором smile.gif)

Из тех знаний которые кое как ещё помню:

8 разрядные регистры Z80:

AF, A`,F` - аккумулятор, флаги
BC, B`,C` - воспомогательные регистры
DE,D`,E`
HL,H`,L`- регистры чаще применяемые для работы с адресами памяти

а также специального назначения:

I - вектор прерывания, R видеопамять
IX,IY - индексные регистры
SP - указатель стека
PC - счетчик команд

в принципе на Z80 при всей его убогости можно было писать довольно мощные программы, единственная проблема - постоянная нехватка памяти, поэтому код должен быть "идеален".

Команд умножения и деления не было и я реализовывал их вручную.

5*6=

LD A,5
LD B,A
LD DE,6
adr0: ADD BC,DE
DEC A
XOR A
JP adr0 (условный переход, если A<>0)
PUSH BC (результат умножения)

Это криво и неэффективно (долго) и скорее всего с каким то багом, но я уже нифига не помню ассемблер Z80, гораздо актуальнее изучить x86 семейство, да и то не факт. C++ и Дельфи рулят конечно, а вот Визуал Бейсик "не нужен".


Сообщение отредактировал MagniD - 17.4.2011, 04:36
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
JustDo
сообщение 1.5.2011, 00:30
Сообщение #74





Группа: Пользователи
Регистрация: 18.10.2008
Пользователь №: 37 512



Цитата(MagniD @ 17.4.2011, 05:33) *
C++ и Дельфи рулят конечно


Давно уже не рулят.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MagniD
сообщение 25.7.2011, 22:06
Сообщение #75





Группа: Пользователи
Регистрация: 11.1.2009
Из: Екатеринбург
Пользователь №: 39 259



Среди нас - старперов - Рулят! smile.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

4 страниц V  < 1 2 3 4 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 22.7.2018, 00:32
Блог КАБiNET