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

Вниз

Позор на мою седую голову...   Найти похожие ветки 

 
vecna ©   (2005-01-19 12:06) [0]

Приплыл...
есть код:

const
 MyCharSet: set of char = ["a".."z"];
begin
 MyCharSet := MyCharSet + ["?"];
end;

этот код вполне успешно компилируется из Delphi.
Но если собирать из командной строки, то получаю:

Error: Left side cannot be assigned to

вопрос собственно, в том, при каких условиях константа это константа, а при каких нет.


 
DiamondShark ©   (2005-01-19 12:11) [1]

{$J+}


 
default ©   (2005-01-19 12:13) [2]

есть опция в
проект/опции/компилятор
там есть переменная Assignable typed constants
которая управляет возможностью подобных присвоений


 
vecna ©   (2005-01-19 12:18) [3]

спорить не буду, но {$J+/-] или включение/отключение флага в Options никак не влияет... все компилируется. =(


 
Sandman25 ©   (2005-01-19 12:26) [4]

[3] vecna ©   (19.01.05 12:18)

Build вместо Compile


 
Alex_Bredin ©   (2005-01-19 12:45) [5]

вообще лучше для таких целей использовать Include вместо +


 
pasha_golub ©   (2005-01-19 12:52) [6]

Alex_Bredin ©   (19.01.05 12:45) [5
Разницы никакой.


 
Alex_Bredin ©   (2005-01-19 12:53) [7]


> pasha_golub ©   (19.01.05 12:52) [6]


Тейксейра обратное утверждает


 
default ©   (2005-01-19 12:58) [8]

pasha_golub ©   (19.01.05 12:52) [6]
разница в том что писать меньше
что писать
Include(egiogdfmhdkhk;erk;tkertjkrytryrtytryryryry, [1])
а что
egiogdfmhdkhk;erk;tkertjkrytryrtytryryryry :=
egiogdfmhdkhk;erk;tkertjkrytryrtytryryryry + [1]
можно, конечно, копировать, но тогда код будет более громоздким
(не результирующий, а компилируемый)


 
pasha_golub ©   (2005-01-19 12:59) [9]

Alex_Bredin ©   (19.01.05 12:53) [7]
Можно номер страницы?


 
Alex_Bredin ©   (2005-01-19 13:09) [10]


> pasha_golub ©   (19.01.05 12:59) [9]


стр 103 для D6

но к теме ветки это вроде не относится


 
MBo ©   (2005-01-19 13:23) [11]

>pasha_golub ©   (19.01.05 12:59) [9]
код действительно при Include генерируется лучше, вот только для свойств-множеств это нельзя использовать
сравни asm-код строчек //1 и //2 (брекпойнт+Alt-Ctrl-C)

var
 s:set of byte;
begin
s:=[1,5,23];
Include(s,3);  //1
s:=s+[3];      //2
if 3 in s then Caption:="OK";


 
pasha_golub ©   (2005-01-19 13:32) [12]

Alex_Bredin ©   (19.01.05 13:09) [10]
MBo ©   (19.01.05 13:23) [11]
Спсб, щас гляну.


 
pasha_golub ©   (2005-01-19 13:40) [13]

Посыпаю голову пеплом. Был неправ.


 
default ©   (2005-01-19 13:46) [14]

MBo ©   (19.01.05 13:23) [11]
получается что команда BTS допускает смотреть биты с порядковыми номерами выше 31?(в инструкции написано что индекс лежит в интервале 0..31)


 
MBo ©   (2005-01-19 14:18) [15]

>default ©   (19.01.05 13:46) [14]
Да нет, не должна допускать.
У меня (D6) эта инструкция в коде не используется.
Include кодируется в один or.


 
default ©   (2005-01-19 14:23) [16]

MBo ©   (19.01.05 14:18) [15]
у меня используется она при Include и тоже D6
и значения больше 31 успешно включаются


 
default ©   (2005-01-19 14:48) [17]

MBo ©   (19.01.05 14:18) [15]
посмотрите следующий код в CPU

procedure TForm1.Button1Click(Sender: TObject);
var
 s:set of byte;
 x: Byte;
begin
 x := 64;
 Include(s,x);
 if x in s then Caption := "OK"
end;

так что сделано маленькое открытие


 
pasha_golub ©   (2005-01-19 14:52) [18]

default ©   (19.01.05 14:48) [17]
Подтверждаю, у меня тоже BTS...

Но, может нужно обратить внимание на адрес? Может BTS применяется не ко всему сету, а со смещением, на требуемый байт?


 
pasha_golub ©   (2005-01-19 14:59) [19]

Intel Manual:
Selects the bit in a bit string (specified with the first operand, called the bit base) at the bitposition
designated by the bit offset operand (second operand), stores the value of the bit in the
CF flag, and sets the selected bit in the bit string to 1. The bit base operand can be a register or
a memory location; the bit offset operand can be a register or an immediate value. If the bit base
operand specifies a register, the instruction takes the modulo 16 or 32 (depending on the register
size) of the bit offset operand, allowing any bit position to be selected in a 16- or 32-bit register,
respectively (see Figure 3-1). If the bit base operand specifies a memory location, it represents
the address of the byte in memory that contains the bit base (bit 0 of the specified byte) of the
bit string (see Figure 3-2). The offset operand then selects a bit position within the range −231 to
231 − 1 for a register offset and 0 to 31 for an immediate offset.
Some assemblers support immediate bit offsets larger than 31 by using the immediate bit offset
field in combination with the displacement field of the memory operand. See “BT—Bit Test” in
this chapter for more information on this addressing mechanism.


 
pasha_golub ©   (2005-01-19 15:04) [20]

Неудачно скопировал. обратить внимание на такое предложение:

The offset operand then selects a bit position within the range −2^31 to
2^31 − 1 for a register offset and 0 to 31 for an immediate offset.


 
MBo ©   (2005-01-19 15:11) [21]

И правда, теперь это применяется к битовой строке, еслм не используется непосредственное значение второго параметра, а я в древний талмуд заглядывал. Век живи, век учись :) Спасибо за наводку.


 
default ©   (2005-01-19 15:14) [22]

pasha_golub ©   (19.01.05 15:04) [20]
понятно
просто в моём спрвочнике этого нет
вот что значит оригинальная документация!!!


 
pasha_golub ©   (2005-01-19 15:16) [23]

Мануалы по коммандам:

ftp://download.intel.com/design/Pentium4/manuals/25366614.pdf - 2,1Мб

ftp://download.intel.com/design/Pentium4/manuals/25366714.pdf - 1,7Мб


 
pasha_golub ©   (2005-01-19 15:17) [24]

MBo ©   (19.01.05 15:11) [21]
default ©   (19.01.05 15:14) [22]
Я просто 30 октября качал


 
Игорь Шевченко ©   (2005-01-19 15:18) [25]

pasha_golub ©   (19.01.05 15:16) [23]

Кстати, отличные мануалы. Благодарю за ссылку.


 
pasha_golub ©   (2005-01-19 16:19) [26]

Игорь Шевченко ©   (19.01.05 15:18) [25]
Не за что. Мануалы, конечно, кошерные... От самого Интела. :)



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

Форум: "Потрепаться";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.038 c
9-1098994980
ОлегЪ
2004-10-29 00:23
2005.02.06
Помогите с виртуальными списками!


4-1102672210
Steepe Wolf
2004-12-10 12:50
2005.02.06
Перехват данных с COM - порта


1-1106677482
Aldor_
2005-01-25 21:24
2005.02.06
Можно ли с помощью GDI получить полноэкранный режим?


4-1103320145
pika
2004-12-18 00:49
2005.02.06
как спрятать свою прогу ???


3-1105394356
Quiii
2005-01-11 00:59
2005.02.06
informacija v bazii danih nesohranjaetsja pri viklju4enii program





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский