Форум: "Основная";
Текущий архив: 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.035 c