Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.04;
Скачать: CL | DM;

Вниз

ASM в Delphi 5   Найти похожие ветки 

 
Rater   (2004-06-17 13:13) [0]

Здравствуйте.
У меня 5-я дельфя ругается а 6-я нет на это:
function rol_(a_,co_:byte):byte;
asm
 pushf
 push ax
 mov ah,a_
 rol ah,co_       //здесь и ругается
 mov @result,ah
 pop ax
 popf
end;
Если поменять co_ на циферку до 255 то нормально.
Это я чего-то не понимаю или дельфя кривит. в 7-й тоже нормально.


 
Романов Р.В. ©   (2004-06-17 13:20) [1]

Как ругается?


 
Rater   (2004-06-17 13:30) [2]

Invalid combination of opcode and operands


 
Романов Р.В. ©   (2004-06-17 13:43) [3]

х.з. Нет D5 чтобы проверить


 
MBo ©   (2004-06-17 13:52) [4]

И правильно ругается (BTW, и Delphi6 этого безобразия не пропускает):

ROL  dest            Rotate dest left by 1 bit position
    dest,CL          ...by CL bit positions
    dest,cnt         ...by immediate count bit positions (mod 32)

Как видишь, твоего способа Intel не предусмотрел.

Маленький трюк:
function rol_(a_,dummy,co_:byte):byte;
позволяет скомпилироваться в D6 (co_ теперь будет в CL), но лучше написать функцию по уму и втрое короче.


 
Digitman ©   (2004-06-17 13:53) [5]

function rol_(a_,co_:byte):byte;
asm
mov cl, dl
rol al, cl
end;


 
evvcom ©   (2004-06-17 13:56) [6]

Действительно именно так и ругается даже при
rol ah, al


 
evvcom ©   (2004-06-17 13:59) [7]

Оп... Digitman уже все разрулил. У меня все же не хватает опыта в писании на asm. Понимания хватает, а вот ...


 
Rater   (2004-06-17 14:08) [8]

В том и дело что 6-я и 7-я допустили такую работу.
Ну да ладно.
Появились 2 вопроса (редко с АСМ работаю)
1. Когда я в дельфях начинаю с ASM работать то регистры пустые и можно сразу с ними работать не боясь что что-то изменю? (Про pop push)
2. Параметры описанные в функции сразу помещаются в регистры? По какому принципу?

И вообще где про это можно почитать? В инете если можно.

Всем Спасибо!


 
MBo ©   (2004-06-17 14:18) [9]

в хелпе Calling conventions
и
http://www.swissdelphicenter.ch/en/showcode.php?id=1233



Страницы: 1 вся ветка

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
1-1087543797
snake2003
2004-06-18 11:29
2004.07.04
не отображаются компоненты


4-1085250854
К.К.С.
2004-05-22 22:34
2004.07.04
Изменение аттрибутов папки и её содержимого


3-1086561829
ROMshtain
2004-06-07 02:43
2004.07.04
TMemorytable из rxlib как отсортировать данные по какому-ть полю


3-1086866997
avgur
2004-06-10 15:29
2004.07.04
корректность вновь сохраненных данных


14-1087058594
AZ
2004-06-12 20:43
2004.07.04
Upgrade hardware & setup Win98