Программа, написанная на Delphi, изменяющая порядок 4 байтов, на которые указывает указатель x:
функция toulong(x: pchar): longWord;
начинать
результат := (длинное слово(x^) shl 24) или
(длинное слово((x + 1)^) шл 16) или
(длинное слово((x + 2)^) шл 8) или
(длинное слово((x + 3)^));
конец;
Ниже приведен метод встроенной сборки с использованием Delphi:
функция toulong(x: pchar): длинное слово;
Асм
mov esi,eax
двигать топором, [esi]
хчг ах, Эл
шл эакс, 16
переместить топор,[esi+2]
хчг ах, Эл
конец;
Примечание. По умолчанию Delphi использует метод «регистрации». Если параметры находятся в пределах 3,
eax, edx и ecx будут использоваться соответственно, а стек будет использоваться для более чем трех параметров. возвращаемые параметры
Хранилище зависит от длины. Например, 8-битная версия использует al для возврата, 16-битная версия использует ax, 32-битная версия использует eax, а 64-битная версия использует два.
32-битный регистр edx:eax, где eax — младший бит.
Эффективность. В этом примере ASM примерно на 50 % быстрее, чем Delphi или C.