Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Вниз

asm   Найти похожие ветки 

 
Ильичев С.А. ©   (2005-10-20 13:21) [0]

Скажите пожалуйста что быстрее.
Или как-то по другому можно?

1.

 function DivTwoAndCeil(const X: Integer): Integer;
 begin
   Result := X div 2;
   if X mod 2 > 0 then inc(Result);
 end;

2.

 function DivTwoAndCeil(X: Integer): Integer; assembler;
 asm
   MOV EAX, X
   MOV ECX, EAX
   SHR EAX, 1
   AND ECX, 1
   ADD EAX, ECX
   MOV Result, EAX
 end;


 
Digitman ©   (2005-10-20 13:33) [1]

function DivTwoAndCeil(X: Integer): Integer;
asm
  AND EAX, 1
end;


 
Digitman ©   (2005-10-20 13:38) [2]

пардон ...

из-за имени ф-ции смысл ее затеи понятен не сразу ..

function DivTwoAndCeil(X: Integer): Integer;
asm
 SHR EAX, 1 //или SAR EAX, 1 при необходимости соблюсти знак
 JNC @@exit
 INC EAX
@@exit:
end;


 
Anatoly Podgoretsky ©   (2005-10-20 13:38) [3]

Быстрее не вызывать функцию


 
Ильичев С.А. ©   (2005-10-20 13:40) [4]

2 Digitman ©   (20.10.05 13:33) [1]
не то =)

мне надо
f(0) = 0
f(1) = 1
f(2) = 1
f(3) = 2
f(4) = 2
f(5) = 3
f(6) = 3
...


 
Digitman ©   (2005-10-20 13:52) [5]


> Ильичев С.А. ©   (20.10.05 13:40) [4]


как это "не то" ?)

убедись сам :

procedure TForm1.Button3Click(Sender: TObject);
var i: integer;
begin
 for i := 0 to 6 do
   memo1.Lines.add(inttostr(divtwoandceil(i)));
end;


 
Ильичев С.А. ©   (2005-10-20 14:05) [6]

2 Digitman ©   (20.10.05 13:52) [5]
за [2] большое спасибо
а в [4] первую срочку внимательнее


 
Anatoly Podgoretsky ©   (2005-10-20 14:15) [7]

Y := X DIV 2 + X MOD 2;


 
MBo ©   (2005-10-20 14:35) [8]

Inc(X)
X div 2


 
evvcom ©   (2005-10-20 14:38) [9]

asm
 SHR EAX, 1
 ADC EAX, 0
end;


 
Cyberdeamon   (2005-10-31 23:22) [10]

<CO DE>


 
Cyberdeamon   (2005-10-31 23:23) [11]

Удалено модератором


 
icWasya ©   (2005-11-01 09:31) [12]

function DivTwoAndCeil(const X: Integer): Integer;
begin
  Result := (X+1) div 2;
end;


 
Fenik ©   (2005-11-01 17:34) [13]

function DivTwoAndCeil(const X: Integer): Integer;
begin
Result := (X+1) shr 1;
end;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.052 c
14-1130496133
Ling
2005-10-28 14:42
2005.11.20
НЕПОРЯДОК!!


2-1130517017
Alex-X
2005-10-28 20:30
2005.11.20
timer,gauge


2-1131017434
W
2005-11-03 14:30
2005.11.20
Ошибки компиляции


11-1110221256
Shanker
2005-03-07 21:47
2005.11.20
Проблемы с установкой Socket


1-1130351163
x.pro
2005-10-26 22:26
2005.11.20
Вопрос по численным методам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский