Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.058 c
14-1087037068
YurikGL
2004-06-12 14:44
2004.07.04
Проблемы образования


1-1087371152
Ш-К
2004-06-16 11:32
2004.07.04
Properties to XML


9-1079030091
010101001010001010101001
2004-03-11 21:34
2004.07.04
АРКАНОЙД


6-1084104348
Shock
2004-05-09 16:05
2004.07.04
Удаленный доступ


4-1085408066
SMART_n
2004-05-24 18:14
2004.07.04
Проблемы с I/O completion port





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский