#pas
function Sum(a,b:integer):integer;
begin
asm
MOV EAX,a
ADD EAX,b
MOV Result,EAX
end;
end;
Этот топик читают: Гость
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Можно и так
|
|||
карма: 10 |
|
Ответов: 3349
Рейтинг: 233
|
|||
Assasin, Лишнюю переменную убери
|
|||
карма: 1 |
|
Ответов: 1321
Рейтинг: 37
|
|||
Assasin, ASM можно и в процедурах использовать?
|
|||
карма: 0 |
|
Ответов: 3349
Рейтинг: 233
|
|||
Roma, Можно
------------ Дoбавленo в 15.27:
На будущее |
|||
карма: 1 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
На будущее
Регистровое соглашение о вызове В языке Object Pascal, использующемся в Delphi, по умолчанию действует регистровое соглашение о вызове. Согласно этому соглашению, первые три 32-разрядных параметра передаются в регистры eax,edx и ecx. Если функция объявлена следующим образом function Sum(i1, i2, i3 : integer): integer; то переменная i1 УЖЕ содержится в регистре eax, i2 -УЖЕ в edx, i3 -УЖЕ в ecx. Если объявлена процедура procedure TSomeObject.SomeProc(i1, i2 : integer); то i1 передается в edx, i2 - в ecx, а в eax передается неявно заданный параметр Self! Это соглашение верно только для Delphi. |
|||
карма: 25 |
| ||
Голосовали: | Ivann, 1nd1g0 |
Ответов: 3349
Рейтинг: 233
|
|||
Tad, Тогда еще лучше
|
|||
карма: 1 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Ivann писал(а): Tad, Тогда еще лучшеЭто работает? Насколько я знаю, нельзя в качестве левого и правого параметра ADD передавать переменные или области памяти |
|||
карма: 10 |
|
Ответов: 3349
Рейтинг: 233
|
|||
Assasin писал(а): Это работает?Они оба являются регистрами, как сказал Tad |
|||
карма: 1 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Вот так будет работать то, что нарисовал Assasin
|
|||
карма: 25 |
|
Ответов: 3349
Рейтинг: 233
|
|||
Tad, Небудет
|
|||
карма: 1 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Tad писал(а): Tad, НебудетАга, лишние begin end стоят В теле функции эти соглашения не работают |
|||
карма: 10 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Ivann, Да ну
code_23919.txt ------------ Дoбавленo в 16.21: Assasin, Tad не писал такого. А вот учите матчасть можно написать. |
|||
карма: 25 |
| ||
файлы: 1 | code_23919.txt [1KB] [494] |
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Tad писал(а): Assasin, Tad не писал такого.И я не делал такой цитаты, форум глюканул |
|||
карма: 10 |
|
Ответов: 16884
Рейтинг: 1239
|
|||||||||||||||||||||
Команда ADD сложить.
|
|||||||||||||||||||||
карма: 25 |
|
Ответов: 3889
Рейтинг: 362
|
|||
[offtop]Я вклинюсь со своими тремя копейками просто отметить, что данные по количеству тактов на операцию сейчас на веру принимать нельзя.[/offtop]
|
|||
карма: 1 |
|