Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 387
от 10.10.2002, 02:50
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 1455 Отправлено ответов: 4542 Активность: 312.1 %
|
От Администратора |
НАПОМИНАЮ!
Уважаемые читатели и эксперты!
26 октября, в субботу, планируется встреча посетителей сайта RusFAQ.ru. Было бы просто здорово, если бы мы могли собраться в разных городах в одно и то же время. Посему беру инициативу в свои руки и организовываю встречу в Москве. Эксперты и подписчики, живущие в других городах, могут написать мне письмо, в котором указать место встречи в их городе и время, а также иные условия (что и сколько с собой приносить, план и пр.). Я опубликую это в рассылке.
Для москвичей: планируется встреча 26 октября в 19:00 в метро Новогиреево (центр зала). В программе: пиво, закуска, караоке. С собой желательно взять 150-200 рублей (если можнете больше - хорошо). Двинемся в сторону Реутова (Новокосино, прибл. 10 мин. автобусом). Там есть хороший, недорогой, уютный бар. Кто едет со стороны Петушков - можем встретиться в центре платформы Реутово ИЗ Москвы. Если у кого есть другие предложения о месте проведения тусовки - пишите! Желающие принять участие, пожалуйста, напишите письмо в произвольной форме и отправьте по адресу admin@rusfaq.ru (обязательно укажите, где вы будете находиться: в метро или на платформе). Буду рад встретиться с экспертами.
Думаю, нам есть о чем поговорить!!!
Ваши мнения также на форуме: http://rusfaq.ru/cgi-bin/Forum.cgi?Action=ShowOpin&Number=65&Forums=All
Калашников О.А. (admin@rusfaq.ru)
Список экспертов, ответы которых опубликованы в данном выпуске |
Pablo Статус: Профессиональный Общий рейтинг: 131 URL: Моя страничка [Подробней >>] |
Sensey Статус: Профессиональный Общий рейтинг: 125.63 URL: Страничка рассылки по Паскаля... Телефон: +38 (0572) 41-76-04 дом. [Подробней >>] |
Bob Johnson Статус: Опытный Общий рейтинг: 153.66 [Подробней >>] |
Biv Статус: Доверительный Общий рейтинг: 117.62 [Подробней >>] |
Beeblebrox Статус: Профессиональный Общий рейтинг: 114.34 URL: Beeblebrox / TMA HomePage [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 118.15 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 156.27 [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 132.31 [Подробней >>] |
SonicX Статус: Опытный Общий рейтинг: 116.28 URL: Моя маленькая страничка с ассемблером. Телефон: (0732)753724 [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 108.17 URL: Страничка обо мне и моих друзьях [Подробней >>] |
St Статус: Начальный Общий рейтинг: 109.52 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 132.77 URL: моя рассылка по Protected Mode [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 1417. Всем привет Просто обалдел от дискуссии , которая разгорелась по вопросу 1328.(на другие бы так:)) З... (ответов: 5)
Вопрос № 1419. Уважаемые эксперты, помогите пожалуйста разобраться с EMS... Использую различные функции 67-го преры... (ответов: 1)
Вопрос № 1420. Здравствуйте ув-ые эксперты! Прошу прощения, если эти вопросы уже обсуждались, но перерывать всю рас... (ответов: 2)
Вопрос № 1421. Привет! А очередной раз поразился как Microsoft утаивает информацию о программировании под Винды! На... (ответов: 5)
Вопрос № 1422. ПРИВЕТ !!! Помоги чем сможеш! Я учюсь на 3-ем курсе университета (нескажу каково). Препод мне дал ку... (ответов: 6)
Вопрос № 1423. wuzzz up masters Вероятно многие из вас знают прилагу Lingvo 8.0 ME и сталкивались с MesBox'ом(если ... (ответов: 2)
Вопрос № 1424. Это не вопрос :) вам еще не надоели вопросы я вот решил начать так сказать изучение Ассемблера мо... (ответов: 4)
Вопросов: 7, ответов: 25
Вопрос № 1417 |
Всем привет
Просто обалдел от дискуссии , которая разгорелась по вопросу 1328.(на другие бы так:))
Занимаясь долгое время цифровой радиоэлектроникой, могу сказать :ТОЛЬКО СЛОЖЕНИЕ
Все операциии и сдвиг и инверсия и исключение т.е. все , что делает процессор , на микроэлектронном уровне происходят через сложение
Например инверсия это сложение с 1 , если посмотреть на схему сдвиговово регистра то видно там тоже сложение
В общем , если нарисовать схему процессора в виде эл.схемы это будут многие миллионы сумматоров соединенные особым порядком .
А инструкции (Biv:)) просто от результата сложения электроны бегут либо туда , либо сюда :))
Спасибо за внимание
Nick
P.S. Спасибо Bob Johnson за ответ на мой вопрос, Kiss отдельное спасибо ( я просил средствами АСМа)
Вопрос отправлен: 05.10.2002, 05:39
Отправитель: nickolai (nickolai@mail.iks.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Pablo
Добрый день, nickolai!
Ну я думаю не слудует путать операцию сложение и операции прводимые на сумматоре, да действительно, что, например, сдвиги выполняются на сумматоре, но они не являются операцией сложения. Потом операции переходов вообще не требуют суммтора.
Если кто когда-нибуть делал процессор на основе меиропроессорного комплекта, то помнит это, а ведь почти во всех нынешних однокристальных микропроцессорах в основе имеенно такой принцип.
Ответ отправлен: 06.10.2002, 16:44
Отправитель: Pablo
Отвечает Sensey
Доброе время суток, nickolai!
Я вот тут проконсультировался с коллегами электронщиками, и вот что они мне сказали:
1. Существуют схемы умножителей, из серий 1800 1802 1804
2. Один из них сделал на 51 даже извлечение корня за 1 такт(табличным методом)...
То есть я так понял, что все можно представить через сложение, но есть гораздо более экономичные методы(схемы)
умножителей, сдвигателей и т.д.
Ответ отправлен: 05.10.2002, 15:56
Отправитель: Sensey
Отвечает Bob Johnson
Приветствую Вас, nickolai!
Подожди, как это: "если посмотреть на схему сдвиговово регистра то видно там тоже сложение"??? Я вообще-то считал, что сдвиговые регистры строятся на D или JK-триггерах... А как же сдвиг более чем на один разряд? Только триггеры и мультиплексоры... А логические операции? Вот никаким сложением ты AND не сделаешь...
Да и инверсию сложением делать не очень хорошо - потому что любой регистр хранения информации на выходе имеет триггер (обычно RS). У такого триггера всегда есть как прямой выход, так и инверсный - проще с инверсных выходов взять сигнал и получить операцию инверсии "просто так", т.е. без каких-либо вычислительных затрат...
Ответ отправлен: 06.10.2002, 15:23
Отправитель: Bob Johnson
Отвечает Biv
Добрый день, nickolai!
1) Вот что я хочу сказать по поводу "только сложения". Представлять, например, ту самую инверсию с помощью сложения неумно, для этого есть великлепная операция НЕ выполняемая на одном несчастном транзисторе.
2) Теперь, что касается фразы "А инструкции (Biv:)) просто от результата сложения электроны бегут либо туда , либо сюда :))". Не сочтите за грубость, но вас батенька, мотает из крайности в крайность - то у вас везде сложение, то вдруг электрончики бегают (может стоит переквалифицироваться в ядерные физики). Из курса проектирования БИС, можно вытянуть такую вещь - более менее простая модель работы процессора состоит из: считывания команды, дешифрации команды (что одновременно является путем к выбору действий, которые необходимо произвестьи, а также частю ответа на вопрос №1328), выполнении и т.д. в зависимости от остальных прибамбасов. Вот собственно и все что я хотел сказать в ответ на вашу реплику.
С уважением Biv.
Ответ отправлен: 07.10.2002, 19:18
Отправитель: Biv
Отвечает Beeblebrox
Доброе время суток, nickolai!
Ты заблуждаешься. Не только сложение. Это было бы слишком громоздко и неэффективно. Хотя несомненно, любую по сложности цифровую схему можно реализовать исключительно на элементах И-НЕ (или же ИЛИ-НЕ)
Ответ отправлен: 07.10.2002, 13:43
Отправитель: Beeblebrox
Вопрос № 1419 |
Уважаемые эксперты, помогите пожалуйста разобраться с EMS...
Использую различные функции 67-го прерывания для получения информации о EMS, в самом начале использую фукцию 40H для получения статуса EMM и в случае ошибки прекращаю работу с EMS... Но дело в том, что всё работает из под различных версий Windows, а в DOS'e обращение к этому прерыванию приводит к зависанию... И помогите пожалуйста разобраться с DPMI - вызов различных функций 31-го прерывания приводит к зависанию... :-
Вопрос отправлен: 05.10.2002, 13:32
Отправитель: ManiaC
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Доброе время суток, ManiaC!
Прежде чем вызывать прерывание 67h, надо проверить, что в системе есть драйвер с именем 'EMMXXXX0'. И только после этого вызывать прерывание 67h.
Просто этот вектор никуда не указывает, если нет драйвера. Соответственно, получаем бред.
Для DPMI сначала нужно вызвать прерывание 2fh, установив регистр в значение 1687h. При возврате AX должно быть равно 0000, что показывает возможность использования функций драйвера DPMI.
Ответ отправлен: 07.10.2002, 13:15
Отправитель: Ayl
Вопрос № 1420 |
Здравствуйте ув-ые эксперты!
Прошу прощения, если эти вопросы уже обсуждались, но перерывать всю рассылку нет времени.
1) Работа с видео через LFB. Сам принцип я понял, но программа моего изготовления работать не хочет. Соответственно просьба - примерчик PutPixel'а.
2) Перемножение матриц (1*4)х(4*4) и (4*4)х(4*4). Вопрос про матрицы уже всплывал в рассылке, но вразумительного ответа на него не было. (или я что-то пропустил?)
3) Вопрос не в тему, но задать его больше некому. Во всех книгах по 3D графике формулы проецирования приводятся для стандартной камеры (0,0,-dist). Соответственно вопрос: как проецировать на произвольную камеру? Развернуть весь мир так, чтобы произвольная камера совпала со стандартной? Но тогда это должно ужастно тормозить...
Заранее спасибо!
Вопрос отправлен: 05.10.2002, 14:48
Отправитель: Dron_Gus (dron_gus_asm@pochtamt.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, Dron_Gus!
2. А что тебя интересует в перемножении матриц? Берешь строку из первой матрицы и столбец из второй - умножаешь первый элемент строки на первый элемент столбца, второй элемнт строки на второй элемент столбца и т.д. Получаешь четыре числа, их просто складываешь. Полученную сумму записываешь на пересечении выбранной строки с выбранным столбцом в результирующую матрицу. Т.е. в матрице 16 элементов, поэтому необходимо будет произвести 16*4 = 64 операции умножения и 16*3 = 48 операций сложения. Если умеешь пользоваться SSE - тогда хватит 16 операций умножения (вот откуда и РЕАЛЬНЫЙ прирост скорости в 3Д приложениях от SSE).
В результате перемножения вектора 1х4 на матрицу 4х4 получишь тоже вектор 1х4. Правила такие же, как и при перемножении матриц - единственно возможную строку (т.е. сам исходный вектор) из первой матрицы и поочередно столбцы второй.
3. Да. Вот для этого и используются матрицы 4*4, потому что такая матрица одновременно может задавать транспонирование (перемещение), масштабирование и поворот вокруг трех осей. При этом тебе необходимо каждый вертекс умножить на заданную матрицу - получишь вертекс в новой системе координат.
Тормозить это не будет. Потому что как ни крути, но один раз тебе придется провести преобразование - для обеспечения проецирования. Если это преобразование тоже осуществлять с помощью матрицы, то можно перемножить матрицу преобразования на матрицу проецирования и получить одну матрицу, осуществляющую сначала преобразование, потом проецирование. Так работает 3D ускоритель. (не будем касаться вертексных шейдеров).
А тут уже сам посмотри - матрица проецирования у тебя всегда одна и та же. Матрица вида (т.е. положение камеры) изменяется один раз на кадр - это немного. Т.е. умножать их друг на друга надо будет только один раз на кадр.
А каждый вертекс у тебя состоит из четырех координат (x, y, z, w), т.е. для его обработки в общем случае понадобится только 4*4 = 16 умножений (или 4 при использовании SSE). Это не очень и много. Можно оптимизировать, т.к. w в исходном вертексе константа (не помню, то ли 0, то ли 1, или w = z, что хуже...)...
Ответ отправлен: 06.10.2002, 15:23
Отправитель: Bob Johnson
Отвечает Biv
Доброе время суток, Dron_Gus!
1) Написал бы програмку народ глянул бы.
2) А в чем вопрос?
3) А в чем разница между произвольной камерой и "стандартной"? В книгах не пишут о произвольной камере потому, что разницы нет. Ведь произвольную камеру можно представить как стандартную камеру, относительно которой все рисуемое, смещено и повернуто теми частями которые видны в произвольной камере (грубовато, но вроде как ясно), но это нужно учесть до того как расчитывать картинку (короче говоря, перейти в новую систему координат).
Тормозить это не будет.
Ответ отправлен: 06.10.2002, 20:21
Отправитель: Biv
Вопрос № 1421 |
Привет!
А очередной раз поразился как Microsoft утаивает информацию о программировании под Винды!
Наверное вы знаете что при работе со скролбаром при протягивании за ползунок мышью посылаются messages WM_HSCROLL or WM_VSCROLL, которые показывают 16-битное представление позиции ползунка. В хелпе (win32.hlp) в функции GetScrollInfo так и написано: см 1) (в приложении). Там же написано что можно использовать 3 флага: SIF_PAGE, SIF_POS, SIF_RANGE.
Тут читаю (в электронном виде на английском) "PROGRAMMING WINDOWS 95" BY CHARLES PETZOLD - и оказывается что есть еще один флаг c помощью которого можно определить 32-битное положения ползунка: SIF_TRACKPOS - он упоминается только в английской версии книги - в файле c русским переводом этого куска текста нет (по крайней мере у меня). см 2) (в приложении).
Кто еще знает неточности в оффициальной документации? может поделитесь во избежании недоразумений!
St
Приложение:
Вопрос отправлен: 05.10.2002, 17:01
Отправитель: St (st23@yandex.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, St!
Попадалось мне что-то, сейчас не упомню что. Если хочешь - найди книги Эндрю Шульмана и Метта Питрека - фактически это справочники по неточностям виндов.
Ответ отправлен: 06.10.2002, 18:28
Отправитель: masquer
Отвечает Bob Johnson
Добрый день, St!
Просто не пользуйся Win32 Programming Referenceю (который идет вместе с дельфи или С билдером). Пользуйся MSDN.
У меня в файле помощи от С++ билдера 5 нет такого флага (хотя поле в структуре есть!), а вот в MSDN (January 2001) - все хорошо описано - и флаг и даже пример есть.
Приложение:
Ответ отправлен: 06.10.2002, 19:19
Отправитель: Bob Johnson
Отвечает Dark_Lord
Добрый день, St!
Пасибо за инфу, всегда рады!
Ответ отправлен: 05.10.2002, 22:42
Отправитель: Dark_Lord
Отвечает SonicX
Здравствуйте, St!
А кто тебе сказал, что MicroSoft сразу выложит все функции Виндов? Для чего по-твоему недокументированные функции?(для того чтобы никто кроме MicroSoft не мог писать крутые программы)
Ответ отправлен: 06.10.2002, 21:45
Отправитель: SonicX
Отвечает Gibbel
Здравствуйте, St!
Только что посмотрел официальную документацию от мелкософт - MSDN. Все флаги описаны.
Ответ отправлен: 07.10.2002, 10:12
Отправитель: Gibbel
Вопрос № 1422 |
ПРИВЕТ !!!
Помоги чем сможеш!
Я учюсь на 3-ем курсе университета (нескажу каково).
Препод мне дал курсовую "Написать программу (Вирус) на Ассемблере, которая должна перехватывать нажатие клавиш на клавиатуре" тоесть если а нажму клавишу 'A' то программа долна пичатать другую букву.
Может кто то знает пару адресочков по програмировании на Ассемблере(прерывания клавиатуры), или подскажет как это зделать.
Буду рад любой помощи ?
Вопрос отправлен: 05.10.2002, 18:04
Отправитель: Сергей (Evil_@ukr.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Здравствуйте, Сергей!
Ну ты и чувак - учишься в университете и пишешь "каково"...
Вопрос твой предельно ясен - скажу сразу, в свое время придумал т.н. "русификатор", который работает с клавиатурой и заменяет все введенные английские буквы на русские (ну, конечно, только те, начертания которых одинаковы) - т.е. "А", "О", "Е" и т.д. Получилось очень прикольно -"установил" его на компах и наблюдал, как люди пишут программу в паскале, а она ... не компилируется... Вот досада! (см. приложение).
Приложение:
Ответ отправлен: 06.10.2002, 19:19
Отправитель: Bob Johnson
Отвечает Dark_Lord
Добрый день, Сергей!
Перехватываешь IRQ9 а потом забираешь букву из буфера и кладёшь;) свою!
Ответ отправлен: 05.10.2002, 22:43
Отправитель: Dark_Lord
Отвечает St
Привет, Сергей!
Попробуйте поискать в инете книгу Джордэйна (он же Журден) Справочник программиста персонального компьютера - старая книга о программировании на Бэйсике и Ассемблере под Dos. Там была глава о работе c клавиатурой.
Например: http://alex-justasu.narod.ru/ или http://sources.fitkursk.ru/detail_book.asp?id=105 (пара адресочков)
В общем поищите любым "русским" поисковиком (yandex.ru или google.com)
St
Ответ отправлен: 05.10.2002, 18:29
Отправитель: St
Отвечает masquer
Доброе время суток, Сергей!
Русский язык выучи, а потом уже за ассемблер берись.
Вирусописатель, блин...
По прерываниям интлист Брауна ищи...
Ответ отправлен: 06.10.2002, 18:55
Отправитель: masquer
Отвечает Broken Sword
Здравствуйте, Сергей!
вешаешься на девятый вектор, читаешь в начале хендлера 60h порт и выводишь на экран другое значение. Вот и все. А в каком ты универе?
Ответ отправлен: 05.10.2002, 19:48
Отправитель: Broken Sword
Отвечает SonicX
Приветствую Вас, Сергей!
Насчет адресочков - что же ты не мог попробовать поискать например YANDEXом? Найдеш сколько твоей душе угодно. А как сделать подскажу. Надо перехватить 9 прерывание и в своем обработчике этого прерывания проверять, если это буква А, то она выводит на экран другую букву, если же нет то никакой самодеятельности.
PS Твоя программа-вирус должна оставаться резидентной.
Ответ отправлен: 06.10.2002, 21:45
Отправитель: SonicX
Вопрос № 1423 |
wuzzz up masters
Вероятно многие из вас знают прилагу Lingvo 8.0 ME
и сталкивались с MesBox'ом(если нет, то в net'e есть описалово)
"Internal program error LigvoProtection.Cpp, 46"
(только если копия пиратская)
и если я не ошибаюсь эту проблему IMHO ещё никто ПОЛНОСТЬЮ не решил,
поэтому становится как-то интересно, что это
за защита такая и вообще возможно ли её сломать
(solution писать не прошу(т.к. я сам хочу это сделать),
но буду очень рад, если поделитесь любой info'й по этому q)
Вопрос отправлен: 05.10.2002, 18:56
Отправитель: cool_хацкер (luxes@mail.cityline.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, cool_хацкер!
Ну ты же кулхацкер... Какие вопросы? Бери софт айс, bpx MessageBoxA... И в путь... А вообще - я сам видел это у себя на компе, когда ставил какой-то лингво. Мне кажется, сломать лингво не так уж легко... Попробуй что-нибудь попроще (если не уверен, что сможешь с лингвой) - например, 3DMark1999 Max.
Ответ отправлен: 06.10.2002, 19:19
Отправитель: Bob Johnson
Отвечает masquer
Здравствуйте, cool_хацкер!
Знают, сталкивались. Многоуровневая защита. В старых версиях ковырять нужно Fobj600.dll.
А вообще ее проще купить, чем ломать - времени можно убить достаточно, но так ни к чему не прийти.
Да и дискетки по инету найти можно...
Ответ отправлен: 06.10.2002, 19:04
Отправитель: masquer
Вопрос № 1424 |
Это
не вопрос :)
вам еще не надоели вопросы
я вот решил начать так сказать изучение Ассемблера
может сделать FAQ ?
Вопрос отправлен: 05.10.2002, 19:55
Отправитель: Юра
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, Юра!
На умные вопросы отвечать не надоедает, надоедаеть отвечать на общие вопросы и слишком часто повторяемые
Ответ отправлен: 06.10.2002, 18:24
Отправитель: masquer
Отвечает Dark_Lord
Здравствуйте, Юра!
Это не ответ!
А ты не боишься, что надоест ответы получать!?
Ответ отправлен: 05.10.2002, 22:45
Отправитель: Dark_Lord
Отвечает Bob Johnson
Добрый день, Юра!
Может быть... А вообще, была же идея создания книги из вопросов нашей рассылки - я вот только вчера задал сам вопрос по этому поводу, но пока ничего не получил в ответ.
Но ты знаешь, скорее всего ничего не получится - чтобы найти ответ на свой вопрос, человеку будет проще его задать снова, а не искать в груде FAQus. Потому что, для нахождения ответа самому нужно будет прочитать много вопросов и ответов FAQ, а когда есть возможность получить ответ проще... В общем, такой уж у нас менталитет.
Ответ отправлен: 06.10.2002, 19:19
Отправитель: Bob Johnson
Отвечает Biv
Приветствую Вас, Юра!
ВПЕРЕД!
Тебе флаг в руки!
Ответ отправлен: 06.10.2002, 19:49
Отправитель: Biv
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (41) C / C++ (30) Perl (4) Delphi (17) Pascal (21) Basic / VBA (10) Java / JavaScript (10) PHP (9) MySQL / MSSQL (10) |
Пользователю Windows 95/98/Me (37) Windows NT/2000/XP (27) "Железо" (33) Поиск информации (14) |
Администратору Windows NT/2000/XP (13) Linux / Unix (16) |
Юристу Гражданское право (7) Семейное право (3) Трудовое право (4) КоАП (4) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||