Sulphide
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору persicum Вроде заготавливает, вот это работает. И так работает и даже если pasf вложить целиком в баттон клик процедуру. Проект х64. Код: function pasf(a, b: int64): int64; function asmf(a1, b1: int64): int64; asm mov rax, a1 add rax, b1 end; begin result := asmf(a, b); end; procedure TForm1.Button1Click(Sender: TObject); begin Button1.Caption := inttostr(pasf(1, 2)); end; | Меня больше напрягает, что даже при явном указании параметров функции как int64, перед вызовом он заполняет только ecx, edx, если параметр меньше или равен MaxInt и константен, как в данном случае. И что-то зануления старшей части я поблизости не увидел. Если константные параметры больше чем MaxInt, то тогда начинает юзат rcx, rdx. Например если в этом примере написать: Button1.Caption := inttostr(pasf(5_000_000_000, 5_000_000_000)); ps Кстати сейчас попробовал эту новую фичу с разделением тысяч нижним подчеркиванием и нашел баг в форматтере. После Ctrl+D первая пятерка отделилась от остального пробелом и конечно все перестало компилиться Ну молодцы чё. Как обычно - бочка мёда, ложка дегтя. | Всего записей: 284 | Зарегистр. 20-03-2008 | Отправлено: 20:20 11-11-2021 | Исправлено: Sulphide, 20:33 11-11-2021 |
|