![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
мы на Delphi Sources или где?
Код:
with TStack.Create do
begin
Push(Pointer(a));
Push(Pointer(b));
Push(Pointer(c));
Push(Pointer(d));
a:=Integer(Pop);
d:=Integer(Pop);
c:=Integer(Pop);
b:=Integer(Pop);
Free;
end;![]() |
|
#17
|
||||
|
||||
|
Не будем делать новую переменную типа Integer. Просто сделаем новый стек.
![]() |
|
#18
|
||||
|
||||
|
в любом случае явно она не определена (в var), так же как и на использование регистров закрываем глаза)))
|
|
#19
|
||||
|
||||
|
Это вообще какое-то мерение писечками, кто круче напишет.
На такие вещи вообще глаза закрывают; не постиранные шнурки не могут изменить ход войны. |
|
#21
|
||||
|
||||
|
Ну когда уже прикладную фаллометрию закончат применением int64 и shl/shr?
![]() P.S. У меня получилось сделать это в одну строку. Первому написавшему это решение + в репутацию от меня ![]() |
|
#22
|
||||
|
||||
|
Цитата:
Код:
asm
push a
push b
pop a
push c
pop b
push d
pop c
pop d
end;![]() |
|
#23
|
||||
|
||||
|
Цитата:
|
|
#24
|
||||
|
||||
|
м, а поподробнее?
|
|
#25
|
||||
|
||||
|
Помещаешь в eax последовательно три байта со значениями твоих переменных, после чего делаешь bswap eax
mov eax, $01020300 bswap eax ; теперь там $00030201 |
|
#26
|
||||
|
||||
|
Цитата:
Код:
with TStack.Create do begin Push(Pointer(a)); Push(Pointer(b)); a:=Integer(Pop); b:=Integer(Pop); Free; end; ![]() |
|
#27
|
||||
|
||||
|
Код:
var A,B:integer; ... Int64((@A)^):=Int64(A) shl 32 + B; ![]() Последний раз редактировалось Bargest, 07.09.2011 в 00:43. |
|
#28
|
||||
|
||||
|
Цитата:
Код:
var a, c, b, d: Integer; begin a:=13; b:=11; c:=1973; d:=$ff; Edit1.Text:=IntToStr(a); Edit3.Text:=IntToStr(b); Int64((@a)^):=Int64(a) shl 32 + b; Edit2.Text:=IntToStr(a); Edit4.Text:=IntToStr(b); end; |
|
#29
|
||||
|
||||
|
А для глобальных пашет.
В локальных надо от B начинать, то естьКод:
var a,b:integer; ... Int64((@b)^):=Int64(b) shl 32 + a; Последний раз редактировалось Bargest, 07.09.2011 в 19:18. |
|
#30
|
|||
|
|||
|
ну так про решение одним оператором и не подряд описаных переменных развод был?
|