Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
Внизxcng - обмен значений - есть ли аналог в Delphi? Найти похожие ветки
← →
tipman (2003-11-12 16:12) [0]В Delphi делаю так...:
temp := a;
a := b;
b := temp;
...а на Asm"е так
xcng a,b
Есть ли аналог такого обмена в Delphi
← →
Skier (2003-11-12 16:13) [1]Swap(...) ?
← →
tipman (2003-11-12 16:25) [2]Swap(...) - это не то. Он меняет старший байт на младший, а младший на старший ОДНОЙ 2-Х БАЙТНОЙ ПЕРЕМЕННОЙ!
А надо 32 битную A поменять на 32 битную B, и наоборот...
← →
Goffman (2003-11-12 16:27) [3]a:=a xor b;
b:=a xor b;
a:=a xor b;
← →
Anatoly Podgoretsky (2003-11-12 16:38) [4]Ну так напиши свою функцию, осталось только три строчки добавить
← →
tipman (2003-11-12 16:48) [5]...я спрашиваю конкретно - есть ли такая функция в Delphi которая была бы аналогом xcng a,b, и не писать свою? Свою-то я знаю как написать, есть ли функция типа того:
procedure delphi_xcng(a,b:integer);
asm
xcng a,b;
end;
← →
tipman (2003-11-12 16:48) [6]...я спрашиваю конкретно - есть ли такая функция в Delphi которая была бы аналогом xcng a,b, и не писать свою? Свою-то я знаю как написать, есть ли функция типа того:
procedure delphi_xcng(a,b:integer);
asm
xcng a,b;
end;
← →
Anatoly Podgoretsky (2003-11-12 17:05) [7]tipman © (12.11.03 16:48) [6]
Это не рабочая функция
← →
tipman (2003-11-12 17:10) [8]почему?
← →
mrcat (2003-11-12 17:12) [9]tipman © (12.11.03 17:10)
Схема команды: xchg операнд_1,операнд_2
Назначение: обмен двух значений между регистрами или между регистрами и памятью.
← →
default (2003-11-12 21:25) [10]по-моему самый быстрый способ это Goffman © (12.11.03 16:27) [3]
три XOR-а быстрей чем XCHG
← →
Ihor Osov'yak (2003-11-12 23:04) [11]2 tipman © (12.11.03 17:10) [8]
Ты волшебное слово var потерял
И инструкция - xcng - нету такой... Возможно третья буковка должна быть h
← →
default (2003-11-13 00:59) [12]
procedure Exchange(var A, B: Integer);
asm
MOV ECX, [EDX]
XOR ECX, [EAX]
XOR [EDX], ECX
XOR [EAX], ECX
end;
но лучше писать типа TMP := A; A := B; B := TMP - это быстрей
← →
tipman (2003-11-13 09:33) [13]Т.е. конкретного оператора не существует?
← →
Anatoly Podgoretsky (2003-11-13 10:07) [14]Тебе начиная с сообщения [1] это и говорят
← →
PVOzerski (2003-11-13 10:11) [15]2[11]: у меня есть нехорошее предположение, что если var добавить, легче может и не стать, так как asm-код начнет тасовать указатели, а не сами переменные (проверять лень :^) ).
← →
MBo (2003-11-13 10:19) [16]>PVOzerski
так default [12]и написал [EDX] и т.п.
← →
tipman (2003-11-13 10:32) [17]PVOzerski © (13.11.03 10:11) [15]
Ты очень даже прав!
Я привёл эту функцию так - для простого примера (естественно неработоспособного)! Но ведь никто не мешает всё это писать в теле самой программы! Тогда помоему всё будет Ok!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c