Swap, функция

Синтаксис


function Swap(Value: Integer): Integer;

Описание

Функция Swap переставляет байты самого младшего слова из Value. Старшие 16 бит не затрагиваются. Если Value имеет тип Int64, Swap игнорирует старшие 32 бита, оставляет неизменными следующие 16 бит и выполняет перестановку младших 16 бит. Функция возвращает результирующее 32-битовое слово (полностью отбрасывая исходные старшие 32 бита).
Swap не является настоящей функцией, а преобразуется в inline-код.

Ошибки

Советы и приемы

  • Эта функция оставлена для обратной совместимости. В текущем воплощении она мало полезна.
  • Перестановка байт - распространенная операция при пересылке файлов или данных по сети. Процессоры Intel используют прямой порядок байт для хранения данных (младшие биты хранятся в старших адресах), а некоторые другие процессоры - обратный (старшие биты в старших адресах).

Пример


// Перестановка байт 32-битового целого; подходит, например,
// для передачи данных между процессорами Intel и Sun.
function Swap32(Value: LongWord): LongWord;
begin
  Result := Swap(Value shr 16) or (Swap(Value) shl 16);
end;

// Если действительно требуется переставить байты в 32-битовом
// целом, например, для преобразования обратного порядка байт в
// е прямой, используйте не функцию Swap, а инструкцию
// BSWAP.
function FastSwap(Value: LongWord): LongWord; register; overload;
asm
  bswap eax
end;

// Для перестановки значения Int64 аргумент передается в стек,
// а возвращаемое значение - в EAX:EDX.
function FastSwap(Value: Int64): Int64; register; overload;
asm
  mov edx, [esp+8]
  bswap edx
  mov eax, [esp+12]
  bswap eax
end;

Смотрите также

Функции Hi, Lo.
    Учебник по языку Pascal          Лабораторные работы по программированию          Справочник




Нет комментариев.



Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: