Модуль utils asm


Содержание

Как скомпилить асм для stm32 в keil.

Берём начало у маньяка.
Создаём прокет keil, на предложения добавить startup соглашаемся.
Создаём main.s, вставляем туда вот этот код. Табуляция имеет значения.

Нажимаем F7 и получаем вот такую хрень.

2.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_md_vl.o)

«Please select first the target STM32F10x device used in your application (in stm32f10x.h file)»

Да… HEX на 2,2 килобайта. Неужели стартап столько жрёт?
выставил оптимизацию в с/с++, уже 1,93 кило

Замигал на асме называется, пока без задержек и мало понимаю как это работает. Кроме тех стандарный mov, ldr понятно. Не понятно с макросами.

Написание модуля на C с использованием вставок asm

Компиляция проходит нормально, никаких ошибок нет. Но, когда я пытаюсь вставить модуль в ядро через insmod modulename.ko, то мне выдаётся Killed. И при проверке через lsmod, этот modulename там висит постоянно до перезагрузки. В графе Used стоит цифра 1. Соответственно, его не выгрузить. Собственно, вопрос заключается в следующем: что я делаю не так. Почему я не могу вставить модуль в ядро?

Пробовал написать данную часть кода на assembler и подключить через makefile. Но, скорее всего делал что-то не так, ассемблеровская функция не распознавалась и компилятор ругался на её вызов. Говорил, что функция задана неявно, вроде как.

Если это имеет значение, то сам makefile выглядит вот так:

obj-m += modulename.o
all:
make -C /lib/modules/$(shell name -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell name -r)/build M=$(PWD) clean

04.11.2015, 20:22

Языки программирования, похожие на Си, с возможностью написания asm-вставок
Доброго времени суток, скажите какие есть похожие языки программирования на СИ, чтобы программируя.

Создание проекта с участием c++ и asm модулей. Ошибка asm модуля
Доброго времени суток! Подскажите, пожалуйста, как исправить данную ошибку (А2008)?

Программа на паскале с использованием ассемблерных вставок
Очень нужна помощь. Нужен код, написанный на языке паскаля с применением ассемблерных вставок и в.

написание модуля
Как написать модуль под dle? Методика от них не помогает. Поделитесь кто с чего начинал.

[masm32] Видимость переменных из другого модуля *.asm при многофайловой компиляции
Пытаюсь скомпилить исходники, найденные на просторах сети, но ml сыпет кучу ошибок, ссылающихся.

10. Модуль util и наследование

Всем привет, тема ближайших глав — самые часто используемые модули Node.JS. Мы уделим им время именно сейчас, потому, что потом, когда мы будем их использовать, у нас просто не будет возможности отойти в сторону резко, и посмотреть, что как там работает.

util.inspect()

Первым методом, который мы изучим, будет метод «util.inspect()», модуля встроенного в «util». Этот метод позволяет красиво вывести любой объект, даже если у этого объекта, как в этом примере, есть ссылка на самого себя.

и видим, что, действительно красиво обработалось. При этом, если у объекта есть свойство, «inspect», и оно равно функции, то эта функция будет вызвана и именно ее результат, будет возвращен. Например

АСМ-модуль

Фабрика корпусной мебели «АСМ-Модуль»

Открытие фабрики «АСМ-Модуль» состоялось 1 августа 2008 года.

Фабрика выпускает спальные гарнитуры, гостиные, прихожие,малые формы.
Все серии мебели являются модульными – Вы можете собрать любой комплект по собственному желанию.

Фабрика «АСМ-Модуль» – это производство европейского уровня, гарантирующее точность выполнения технологических процессов на уровне международных стандартов. В процессе производства используются только проверенные материалы и надёжная мебельная фурнитура. Каждая стадия производства контролируется четырёхуровневой системой ОТК, повышающей надёжность выпускаемой продукции.

Фабрика оснащена передовым немецким оборудованием фирмы Homag, в том числе: форматно-раскроечный центр, обрабатывающий центр, фрезерные станки, мембранно-вакуумный пресс и другое оборудование, позволяющее выпускать собственные фасады и изголовья из МДФ, обрабатывать самые сложные детали и воплощать в жизнь идеи наших дизайнеров.

Вся продукция изготавливается из высококачественных комплектующих: ЛДСП Lamarty (Россия), кромка ПВХ Rehau (Германия), фурнитура Hettiсh (Германия), Boyard. Это обеспечивает производство эргономичной, функциональной, безопасной для здоровья, экологически чистой, не токсичной мебели.

Производство и склады фабрики расположены в городе Екатеринбург, столице Урала, а объёмы выпускаемой продукции позволяют охватить города не только Свердловской области, но и другие города России, а также стран ближнего зарубежья.

Наш девиз остаётся всегда неизменным: «АСМ-Модуль» – Для тех, кто любит свой дом!

Oracle ASM — производительность при хранении файлов базы данных

В Oracle ASM (Automatic Storage Management) — повышает производительность путем автоматического рассредоточения объектов базы данных по большому количеству устройств, увеличивает доступность базы данных, так как позволяет добавлять в базу данных новые дисковые устройства, не останавливая ее. ASM автоматически, с минимальным вмешательством в работу производит выравнивание распределения файлов но устройствам хранения.

3 способа задания избыточности:

  • External: нет избыточности (предполагается аппаратная избыточность дискового массива).
  • Normal: двойное зеркалирование
  • High: тройное зеркалирование

Архитектура ASM

Для увеличения производительности и надежности ASM делит файлы данных и другие структуры базы данных на экстенты и распределяет эти экстенты по всем дисковым устройствам, входящим в дисковую группу. Вместо зеркалирования всего дискового тома ASM подвергает зеркалированию объекты базы данных для придания зеркалированию гибкости или рассредоточению объектов базы данных способом, наиболее подходящего для их типа.

Автоматическая регулировка нагрузки является еще одной ключевой характеристикой ASM. Когда требуется увеличение объема дискового пространства, к дисковой группе могут быть добавлены новые дисковые устройства, a ASM перенесет пропорциональное количество файлов с одного или с нескольких имевшихся ранее дисков на новые диски для поддержания общего баланса ввода/вывода для всех имеющихся дисков. Если влияние, оказываемое во время выполнения операций по перенастройке на подсистему ввода /вывода, велико, скорость перенастройки может быть уменьшена за счет применения параметров инициализации.

Для ASM необходим особый экземпляр Oracle, который предназначается для поддержки взаимодействия между традиционным экземпляром Oracle и файловой системой. Компоненты программного обеспечения ASM поставляются вместе с программным обеспечением базы данных Oracle и всегда доступны в тех случаях, когда при создании базы данных для табличных пространств SYSTEM, SYSAUX и для других табличных пространств был выбран тип хранения ASM.

Однако использование ASM не избавляет от необходимости смешивать дисковые группы ASM с «ручными» методами управления файлами данных, описанными выше. Тем не менее, простота использования и высокая производительность ASM становятся веским доводом в пользу применения ASM для всех потребностей хранения.

Для поддержки экземпляров ASM появились два новых фоновых процесса Oracle: RBAL и ORBn. Процесс RBAL координирует всю дисковую активность для дисковых групп, в то время как ORBn, где n может быть числом от 0 до 9, выполняет фактическое перемещение экстентов между дисками, входящими в дисковую группу.

Для баз данных, использующих ASM, также появились два новых фоновых процесса: OSMB и RBAL. Процесс OSMB осуществляет взаимодействие между базой данных и экземпляром ASM, в то время как RBAL от имени базы данных выполняет открытие и закрытие дисков в составе дисковой группы.

Для ASM требуется выделенный экземпляр Oracle для управления дисковыми группами. Обычно экземпляр ASM требует очень немного места в оперативной памяти в диапазоне от 60 до 120 Мбайт. При специфицировании ASM как способа хранения файлов данных во время инсталляции программного обеспечения Oracle этот экземпляр конфигурируется автоматически, если к этому моменту экземпляра ASM еще не существовало.

После создания базы данных Oracle будут запущены и обычный экземпляр, и экземпляр ASM.

У экземпляра ASM есть несколько других уникальных характеристик. Хотя у него имеется файл параметров инициализации и файл паролей, у пего нет словаря данных, и, следовательно, все подключения к экземпляру ASM должны проводиться только через пользователей SYSTEM и SYS с использованием аутентификации операционной системы. Команды дисковой группы типа create diskgroup, alter diskgroup и drop diskgroup разрешены только для экземпляра ASM. И, наконец, экземпляр ASM может функционировать только в режимах NOMOUNT или MOUNT; он никогда не может быть в режиме OPEN.

У экземпляра ASM нет словаря данных, так что доступ к экземпляру ограничен и возможен только для пользователей которые могут подключаться как SYSDBA или SYSOPER.

Пользователи, подключившиеся к экземпляру ASM как SYSDBA, могут выполнять все операции ASM, например, создание и удаление дисковых групп, а также добавление и удаление дисков из дисковых групп.

У пользователя SYSOPER есть значительно более ограниченный набор команд, доступных для использования с экземпляром ASM. Команды, доступные для пользователя SYSOPER, дают достаточно привилегий для выполнения рутинных операций для уже сконфигурированного и стабильного экземпляра ASM.

Параметры инициализации ASM

Для экземпляров ASM настоятельно рекомендуется применять SPFILE.

INSTANCE_TYPE

Для экземпляра ASM параметр INSTANCE_TYPE принимает значение ASM. Значением по умолчанию, используемым для традиционных экземпляров Oracle, является RDBMS.

DB_UNIQUE_NAME

Значение по умолчанию параметра DB_UNIQUE_NAME равно +ASM и является уникальным именем группы экземпляров ASM для кластера или одиночного узла; значение по умолчанию должно быть модифицировано, только если делается попытка эксплуатировать на одном узле несколько экземпляров ASM.

ASM_POWER_LIMIT

Чтобы гарантировать, что операции по перенастройке не оказывают влияния на текущие действия пользователя по вводу /выводу, параметр .ASM. POWER._LIMIT управляет тем, как быстро происходят операции но перенастройке.

Значения этого параметра лежат в диапазоне от 1 до 11, причем 11 является максимальным возможным значением, а 1 значением по умолчанию (обеспечивающим низкие накладные расходы для ввода/ вывода). Поскольку этот параметр является динамическим, в рабочее время (в дневные часы) его значение- можно изменять на более низкое, а в ночное время (когда можно выделять больше времени на операции по перенастройке дисковых трупп) задать более высокое значение.

ASM_DISKSTRING

Параметр ASM_DISKSTRING специфицирует одну или несколько строк (в зависимости от операционной системы) для ограничения количества дисковых устройств, которые могут быть использованы для создания дисковых групп. Если это значение есть NULL, потенциальными кандидатами на включение в состав создаваемой дисковой группы являются все видимые ASM дисковые устройства.

ASM_DISKGROUPS

Параметр ASM_DISKGROUPS специфицирует список, содержащий имена дисковых групп, которые должны быть автоматически смонтированы экземпляром ASM при запуске или командой alter diskgroup all mount. Даже если в момент запуска экземпляра этот список пуст, любые имеющиеся в наличии дисковые группы могут быть смонтированы вручную.

LARGE_POOL_SIZE

Параметр LARGE POOL_SIZE полезен как для обычных экземпляров, так и для экземпляров ASM: однако для экземпляров ASM этот пул используется по-другому. Из этого пула выполняются внутренние пакеты ASM, так что этот параметр должен быть равен, по меньшей мере, 8 Мбайт.

Запуск и остановка экземпляра ASM

Запуск экземпляра ASM во многом похож на запуск обычного экземпляра, за тем исключением, что значением по умолчанию для команды startup является startup mount. Поскольку для этого экземпляра отсутствуют управляющий файл, база данных или словарь данных, которые можно было бы смонтировать, вместо базы данных монтируются группы дисков ASM. Команда startup nomount запускает экземпляр, но при этом не монтирует никаких дисков ASM. Помимо этого можно указать startup restrict, чтобы временно запретить экземплярам базы данных подключаться к экземпляру ASM для монтирования дисковых групп.

При выполнении команды shutdown для экземпляра ASM, та же самая команда выполняется и для всех экземпляров баз данных, использующих экземпляр ASM; прежде чем экземпляр ASM закончит операцию остановки, он будет ожидать, пока не окажутся остановленными все зависимые базы данных. Единственным исключением из этого правила является использование для экземпляра ASM команды shutdown abort, которая, в конечном счете, вынуждает все зависимые базы данных также выполнить команду shutdown abort.

Динамические представления производительности ASM

V$ASM_ DISK — По одной строке для каждого диска, обнаруженного экземпляром ASM, вне зависимости от того, используется ли он в дисковой группе или нет. Для экземпляра базы данных одна строка для каждой дисковой группы, используемой экземпляром.

V$ASM_DISKGROUP — Для экземпляра ASM одна строка для каждой дисковой группы, содержащая общие характеристики этой группы. Для экземпляра базы данных одна строка для каждой используемой дисковой группы, неважно, смонтирована она или нет.

$ASM_FILE — Одна строка для каждого файла в каждой смонтированной дисковой группе.

V$ASM_OPERATI0N — Одна строка для каждой выполняющейся длительное время операции в экземпляре ASM.

V$ASM_TEMPLATE — Одна строка для каждого шаблона в каждой смонтированной дисковой группе для экземпляра ASM. Для экземпляра базы данных одна строка для каждого шаблона для каждой смонтированной дисковой группы.

V$ASM_CLIENT — Одна строка для каждой базы данных, использующей дисковые группы, управляемые экземпляром ASM. Для экземпляра базы данных одна строка для экземпляра ASM. если имеются отрытые экземпляры.

V$ASM_ALIAS — Одна строка для каждого псевдонима в каждой смонтированной дисковой группе.

Администрирование дисковых групп ASM

Использование дисковых групп ASM оказывается выгодным по нескольким причинам: повышается производительность ввода/вывода, увеличивается доступность, а простота, с которой можно добавить диск в дисковую группу или добавить абсолютно новую дисковую группу, позволяет за то же самое время справляться с управлением большим числом баз данных. Понимание компонент дисковой группы, а также ее соответствующее конфигурирование являются весьма важными задачами для успешного АБД.

Архитектура дисковых групп

Дисковой группой называется совокупность (collection) физических дисков, управляемая как единый элемент. У каждого диска ASM как у части дисковой группы имеется имя диска ASM, которое либо назначается АБД, либо присваивается ему автоматически при включении в дисковую группу.

Файлы в дисковой группе рассредоточены по дискам с применением либо крупноблочного, либо мелкоблочного расщепления. При крупноблочном расщеплении (coarse striping) файлы рассредоточиваются но всем доступным дискам блоками по 1 Мбайт. Такое расщепление оказывается подходящим для системы с высокой степенью одновременно выполняющихся небольших по объему запросов на ввод/вывод, например для сред OLTP.

При мелкоблочном расщеплении файлы разбиваются па блоки размером 128 Кбайт. Такое расщепление более всего подходит для традиционных сред хранилищ данных или для систем OLTP с не слишком высоким конкурентным доступом, так как при этом минимизируется время отклика на индивидуальные запросы ввода/вывода.

Зеркалирование дисковых групп и групп отказа

Прежде чем определить тип зеркалирования в дисковой группе, необходимо сгруппировать диски в так называемые группы отказа. Группой отказа называется один или несколько входящих в состав дисковой группы дисков, разделяющих некоторый общий ресурс, например контроллер дисков, выход которого из строя делает недоступным для дисковой группы весь этот набор дисков. В большинстве случаев экземпляр ASM не знает об аппаратных и программных зависимостях для данного диска. Следовательно, если только специально не приписать диск к группе отказа, каждому диску будет назначена собственная труппа отказа.

После определения группы отказа можно определить зеркалирование для дисковых групп; тип зеркалирования, доступный для дисковой группы, может быть ограничен числом имеющихся в дисковой группе групп отказа. Есть всего три типа зеркалирования: внешняя, обычная и высокая избыточность.

Внешняя избыточность

Для внешней избыточности требуется наличие только одной группы отказа. Предполагается, что дисковая группа не является критичной для продолжения функционирования базы данных или что диск является управляемым внешним образом с помощью специализированного программного обеспечения, гарантирующего высокую доступность, например с помощью контроллера RAID.

Обычная избыточность

Обычная избыточность обеспечивает двукратное зеркалирование и требует, чтобы в группе дисков было, по крайней мере, две группы отказа. Выход из строя одного из дисков в группе отказа не вызывает никакого простоя дисковой группы и не приводит к потере данных, разве что к небольшой потере производительности запросов к объектам из этой дисковой группы.

Высокая избыточность

Для обеспечения высокой избыточности предлагается трехкратное зеркалирование, для чего требуется, чтобы в группе дисков было не менее трех групп отказа. Выход из строя дисков в двух группах отказа из имеющихся трех в большинстве случаев останется прозрачным для пользователей базы данных, как и в случае зеркалирования с обычной избыточностью.

Управление зеркалированием осуществляется на очень низком уровне. Зеркалируются не диски, а экстенты. Кроме того, на каждом диске должна храниться смесь первичных и зеркалированных (вторичных и третичных) экстентов. И хотя для управления зеркалированием на уровне экстентов не обойтись без небольших накладных расходов, зеркалирование обеспечивает преимущества рассредоточения нагрузки с вышедшего из строя диска на все оставшиеся диски, а не на один диск.

Динамическая перенастройка дисковой группы


Всякий раз, когда конфигурация дисковой группы изменяется если вы добавляете в нее или удаляете из нее труппу отказа или диск, в составе группы отказа автоматически производится динамическая перенастройка для пропорционального перераспределения данных с других дисков, являющихся членами дисковой группы, па новый ее член. Перенастройка происходит в то время, когда база данных находится в оперативном состоянии и доступна для пользователей; любое влияние на непрекращающиеся операции ввода/вывода пользователей может быть взято под контроль посредством настройки значения параметра инициализации ASM POWER LIMIT в сторону более низких значений.

Динамическая перенастройка не только освобождает от утомительной и зачастую подверженной ошибкам процедуры определения «горячих точек» для дисковой группы, но и предлагает способ автоматического переноса всей базы данных с набора более медленных дисков на набор более высокоскоростных дисков без остановки базы данных. Более высокоскоростные диски добавляются как новая группа отказа в существующую дисковую группу наряду с имеющимися «медленными» дисками, после чего происходит автоматическая перенастройка. После завершения этой перенастройки группы отказа, в которые входят медленные диски, удаляются, так что будут оставлены только труппы отказа, состоящие из высокоскоростных дисков. Чтобы сделать эту операцию еще более быстрой, обе операции add (добавить) и drop (удалить) могут быть инициированы внутри одной команды alter diskgroup (изменить дисковую группу).

Илон Маск рекомендует:  bdi в HTML

Предположим, что требуется создать новую ДИСКОВУЮ группу с высокой избыточностью, где будут храниться табличные пространства Сданными для нового приложения по авторизации кредитных карт. С помощью представления V$ASM_DISK можно, применив параметр инициализации V$ASM_DISKSTRING и статус диска, просмотреть все обнаруженные диски (другими словами, выяснить, был ли этот диск назначен существующей дисковой группе или остался нераспределенным):

Из шести доступных для ASM дисков только два назначены для одиночной дисковой группы, причем каждый из них образует собственную группу отказа. Имя дисковой группы может быть получено из представления V$ASM_DISKGROUP:

Если есть некоторое количество дисков и дисковых групп ASM, можно объединить эти два представления по столбцу GROUP_NUMBER и отфильтровать результаты запроса по этому же столбцу. Кроме того, из V$ASM_DISKCROUP можно видеть, что дисковая группа DATA1 является состоящей из двух дисков группой с обычной избыточностью (NORMAL REDUNDANCY).

На первом шаге создадим дисковую группу:

Взглянув на динамические представления производительности, из представления V$ASM_DISKGROUP можно увидеть ставшую доступной новую дисковую группу, а из представления V$ASM_DISK ознакомиться с группами отказа:

Однако, если дискового пространства маловато, можно отказаться от четырех членов; для дисковой группы с высокой избыточностью достаточно трех групп отказа, так что можно удалить эту дисковую группу и заново создать ее только с тремя членами:

Если в дисковой группе есть какие-либо объекты базы данных, кроме метаданных дисковой группы, необходимо специфицировать в команде drop diskgroup фразу including contents. Это является дополнительной мерой предосторожности, позволяющей убедиться, что дисковые группы с объектами базы данных не будут случайно удалены:

Теперь, когда конфигурирование новой дисковой группы закончено, в новой дисковой группе можно создать табличное пространство (из экземпляра базы данных):

Поскольку файлы ASM являются управляемыми Oracle файлами, при создании табличного пространства не требуется задавать никаких других его характеристик.

Изменение дисковых групп

В дисковую группу можно добавлять диски и удалять их оттуда; кроме того, многие характеристики дисковой группы могут быть изменены без повторного ее создания и не оказывая влияния на транзакции пользователей над объектами из дисковой группы.

Когда диск добавляется к дисковой группе, после того как диск будет отформатирован для использования в дисковой группе, выполняется операция перенастройки. Скорость перенастройки контролируется параметром инициализации ASM_POWER_LIMIT.

Продолжая пример, предположим, что принято решение улучшить характеристики ввода/вывода дисковой группы DATA1, добавив в нее последний из оставшихся в наличии «чистых» дисков:

Немедленно осуществляется выход из команды, а форматирование и перенастройка продолжаются в фоновом режиме. После этого можно проверить статус операции перенастройки, проверив представление V$ASM_OPERATION:

Поскольку оценочное время завершения операции перенастройки составляет 10 мин, принимается решение выделить для этой операции больше ресурсов и изменить предельную «мощность» этой конкретной операции перенастройки:

Проверка статуса операции перенастройки подтверждает, что оценочное время до завершения операции сократилось с 16 до 4 минут:

Спустя четыре минуты проверим статус задания еще раз:

И, наконец, подтвердим конфигурацию нового диска из представлений V$ASM _DISK и V$ASM DISKGROUP:

Избыточность дисковой группы остается нормальной, несмотря па то, что в ней есть три группы отказа. Однако производительность ввода/вывода оператора select относительно объектов из этой дисковой группы возрастает благодаря наличию дополнительных копий экстентов, ставших доступными для дисковой группы.

Другие команды alter для дисковых групп

  • alter diskgroup . drop disk — Удаляет диск из группы отказа в составе дисковой группы и выполняет автоматическую перенастройку
  • alter diskgroup . drop. add — Удаляет диск из группы отказа и добавляет (в той же команде) вместо него другой диск
  • alter diskgroup . mount — Делает дисковую группу доступной для всех экземпляров
  • alter diskgroup . dismount — Делает дисковую группу недоступной для всех экземпляров
  • alter diskgroup . check all — Проверяет внутреннюю согласованность дисковой группы

Миграция базы данных в среду ASM

Поскольку к файлам ASM нельзя получить доступ средствами операционной системы, для перемещения в дисковую группу ASM объектов базы данных, хранящихся не в среде ASM, необходимо использовать диспетчер восстановления (RMAN). Для перемещения таких объектов нужно выполнить следующие шаги:

20 ASM Command-Line Utility (ASMCMD)

This chapter describes the Automatic Storage Management Command-Line Utility (ASMCMD). It contains the following topics:

About AS MCMD

ASMCMD is a command-line utility that you can use to easily view and manipulate files and directories within Automatic Storage Management (ASM) disk groups. It can list the contents of disk groups, perform searches, create and remove directories and aliases, display space utilization, and more.

You cannot use ASMCMD to create or drop disk groups or to add or drop disks in a disk group. For these operations, you must use SQL commands.

Oracle Database Administrator’s Guide for general information on Automatic Storage Management.

About ASM Files, Filenames, Directories, and Aliases

ASMCMD works with Automatic Storage Management (ASM) files, directories, and aliases. Before using ASMCMD, you must understand how these common computing concepts apply to the unique ASM environment. The following are some key definitions.

The forward slash (/) and backward slash (\) are interchangeable in filenames. Also, filenames are case insensitive, but case retentive.

System-generated filename or ‘fully qualified filename’

Every file created in ASM gets a system-generated filename, otherwise known as a fully qualified filename. This is analogous to a complete path name in a local file system. An example of a fully qualified filename is the following:

ASM generates filenames according to the following scheme:

In the previous fully qualified filename, dgroup2 is the disk group name, sample is the database name, controlfile is the file type, and so on.

See Oracle Database Administrator’s Guide for more detailed information on fully qualified filenames.

As in other file systems, an ASM directory is a container for files, and it can be part of a tree structure of other directories.

The fully qualified filename in fact represents a hierarchy of directories, with the plus sign (+) as the root. In each disk group, ASM creates a directory hierarchy that corresponds to the structure of the fully qualified filenames in the disk group. The directories in this hierarchy are known as system-generated directories. ASMCMD enables you to move up and down this directory hierarchy with the cd (change directory) command. The ASMCMD ls (list directory) command lists the contents of the current directory, while the pwd command prints the name of the current directory.

When you start ASMCMD, the current directory is set to root (+). For an ASM instance with two disk groups, dgroup1 and dgroup2 , entering an ls command with the root directory as the current directory produces the following output:

The following example demonstrates navigating the ASM directory tree (refer to the fully qualified filename shown previously):

You can also create your own directories as subdirectories of the system-generated directories. You do so with the ALTER DISKGROUP command or with the ASMCMD mkdir command. Your user-created directories can have subdirectories, and you can navigate the hierarchy of both system-generated directories and user-generated directories with the cd command. See Oracle Database Administrator’s Guide for more information on ASM directories.

The following example creates the directory mydir in the disk group dgroup1 :

(Note that the directory dgroup1 is a system-generated directory. Its contents represent the contents of the disk group dgroup1 .)

If you start ASMCMD with the -p flag, ASMCMD always shows the current directory as part of its prompt.

ASM does not place system-generated files into your user-created directories; it places them only in system-generated directories. You add aliases (described next) or other directories to a user-created directory.

An alias is a filename that is a reference (or pointer) to a system-generated filename, but with a more user-friendly name. It is similar to a symbolic link in Unix operating systems. You create aliases to make it easier to work with ASM filenames. You can create an alias with an ALTER DISKGROUP command or with the mkalias ASMCMD command.

An alias has at a minimum the disk group name as part of its complete path. You can create aliases at the disk group level or in any system-generated or user-created subdirectory. The following are examples of aliases:

If you run the ASMCMD ls (list directory) with the -l flag, each alias is listed with the system-generated file that it references.

See Oracle Database Administrator’s Guide for more information on aliases.

Absolute path and Relative path

When you run an ASMCMD command that takes a filename or directory name as an argument, you can supply the name as either an absolute path or a relative path.

An absolute path refers to the full path to a file or directory. An absolute path begins with a plus sign (+), followed by a disk group name, followed by subsequent directories in the directory tree until the file or directory of interest is reached. A complete system-generated filename (otherwise known as the fully qualified filename) is an example of an absolute path to a file.

Using an absolute path enables the command to access the file or directory regardless of where the current directory is set. The following rm command uses an absolute path for the filename:

The following command uses an absolute path to the directory.

A relative path includes only the part of the filename or directory name that is not part of the current directory. That is, the path to the file or directory is relative to the current directory.

In the following example, the rm command operates on the file undotbs1.272.557429239 , which in this case is a relative path. ASMCMD prepends the current directory to the command argument to obtain the absolute path to the file, which is +dgroup1/sample/datafile/undotbs1.272.557429239 .

Paths to directories can also be relative. You can go up or down the hierarchy of the current directory tree branch by providing a directory argument to the cd (change directory) command whose path is relative to the current directory.

In addition, you can use the pseudo-directories «.» and «..» in place of a directory name. The «.» pseudo-directory is the current directory. The «..» psuedo-directory is the parent directory of the current directory.

The following example demonstrates using relative directory paths and pseudo-directories:

The wildcard characters «*» and «%» match zero or more characters anywhere within an absolute or relative path. The two characters behave identically. The ASMCMD commands that accept wildcards are ls , du , rm , and find . The following examples illustrate the use of wildcards.

Running ASM CMD

You can run the ASMCMD utility in either interactive or noninteractive mode. Before running ASMCMD, you must ensure that you are logged in properly and that your environment is properly configured.

Preparing to Run ASMCMD

To prepare to run ASMCMD :

Ensure that the ASM instance is started and the ASM disk groups are mounted. (You cannot use ASMCMD to mount disk groups.)

Log in to the host that is running the ASM instance that you want to work with. You must log in as a user that has SYSDBA privileges through operating system authentication.

See Oracle Database Administrator’s Guide for information on operating system authentication.

Set the ORACLE_HOME and ORACLE_SID environment variables to select the ASM instance. Depending on your operating system, you may have to set other environment variables to properly connect to the ASM instance. See Oracle Database Administrator’s Guide for more information on setting environment variables.

The default value of the ASM SID for a single instance database is +ASM . On a Real Application Clusters system, the default value of the ASM SID on any node is +ASM node# .

Ensure that bin subdirectory of your Oracle home is in your PATH environment variable.

Running ASMCMD in Interactive Mode

The interactive mode of the ASMCMD utility provides a shell-like environment where you are prompted to enter ASMCMD commands.

To run ASMCMD in interactive mode:

At the operating system command prompt, enter:

An ASMCMD command prompt is displayed.

Enter an ASMCMD command and press the Enter key.

The command runs and displays its output, if any, and then ASMCMD prompts for the next command.

Continue entering ASMCMD commands. Enter the command exit to exit ASMCMD.

Including the Current Directory in the ASMCMD Prompt

You can specify the -p option with the asmcmd command to include the current directory in the ASMCMD prompt, as shown in the following example:

Running ASMCMD in Noninteractive Mode

In noninteractive mode, you run a single ASMCMD command by including the command and command arguments on the command line that invokes ASMCMD. ASMCMD runs the command, generates output if any, and then exits. The noninteractive mode is especially useful for running scripts.

To run ASMCMD in noninteractive mode:


At the command prompt, enter:

asmcmd command arguments

command is any valid ASMCMD command. arguments is a list of command flags and arguments.

The following example demonstrates running ASMCMD in the noninteractive mode.

Getting Help

Type help at the ASMCMD prompt or as a command in noninteractive mode to view general ASMCMD help and a list of available commands.

ASMCMD Comma nd Reference

This section describes each individual ASMCMD command in detail. Table 20-1 provides a summary of all ASMCMD commands.

Table 20-1 Summary of ASM Commands

Command Description
cd Changes the current directory to the specified directory.
du Displays the total disk space occupied by ASM files in the specified ASM directory and all its subdirectories, recursively.
exit Exits ASMCMD.
find Lists the paths of all occurrences of the specified name (with wildcards) under the specified directory.
help Displays the syntax and description of ASMCMD commands.
ls Lists the contents of an ASM directory, the attributes of the specified file, or the names and attributes of all disk groups.
lsct Lists information about current ASM clients.
lsdg Lists all disk groups and their attributes.
mkalias Creates an alias for a system-generated filename.
mkdir Creates ASM directories.
pwd Displays the path of the current ASM directory.
rm Deletes the specified ASM files or directories.
rmalias Deletes the specified alias, retaining the file that the alias points to.

Changes the current directory to the specified directory.

Syntax and Description

dir may be specified as either an absolute path or a relative path, including the pseudo-directories «.» and «..».

Displays the total space used for files in the specified directory and in the entire directory tree under it.

Syntax and Description

This command is similar to the du -s command in UNIX. If you do not specify dir , information about the current directory is displayed. dir can contain wildcard characters.

The following two values are displayed, both in units of MB.

Used_MB —This value does not take the mirroring into account. Mirror_used_MB —This value takes mirroring into account.

For example, if a normal redundancy disk group contains 100 MB of data, then assuming that each file in the disk group is 2-way mirrored, Used_MB is 100 MB and Mirror_used_MB is roughly 200 MB.

The -H flag suppresses column headings from the output.

The following example shows disk space used in the SAMPLE directory in DGROUP1 , including all directories below SAMPLE .

Exits ASMCMD and returns to the operating system command line prompt.

Displays the absolute paths of all occurrences of the specified name (with wildcards) in a specified directory and its subdirectories.

Syntax and Description

This command searches the specified directory and all subdirectories below it in the directory tree for the supplied name. name can be a directory name or a filename, and can include wildcard characters. dir may also include wildcards. In the output of the command, directory names are suffixed with the slash character (/) to distinguish them from filenames.

You use the -t flag to find all the files of a particular type (specified as type ). For example, you can search for control files by specifying type as CONTROLFILE . Valid values for type are the following:

These are the values from the type column of the V$ASM_FILE view.

The following example searches the dgroup1 disk group for files that begin with ‘undo’:

The following example returns the absolute path of all the control files in the +dgroup1/sample directory.

Displays the syntax of a command and a description of the command parameters.

Syntax and Description

If command is not specified, the help command displays a list of all the ASMCMD commands and general information about using the ASMCMD utility.

Lists the contents of an ASM directory, the attributes of the specified file, or the names and attributes of all disk groups.

Syntax and Description

name can be a filename or directory name, including wildcard characters.

If name is a directory name, ASMCMD lists the contents of the directory, and, depending on flag settings, information about each directory member. Directories are listed with a trailing slash (/) to distinguish them from files.

If name is a filename, ASMCMD lists the file, and, depending on flag settings, information about the file. The file must be located in the current directory if the filename is specified with a relative path.

Command flags enable you to modify and customize the output of the command. The following table lists the flags and their descriptions.

Table 20-2 Flags for the ls command

Flag Description
(none) Displays only filenames and directory names.
-l Displays extended file information, including striping and redundancy attributes and whether the file was system-generated (indicated by Y under the SYS column) or user-created (as in the case of an alias, indicated by N under the SYS column). When used in the » ls -l + » command, displays extended disk group information. Note that not all possible file attributes or disk group attributes are included. To view the complete set of attributes for a file or a disk group, query the V$ASM_FILE and V$ASM_DISKGROUP views.
-s Displays file space information.
-d If the name argument is a directory, displays information about that directory, rather than the directory contents. Typically used with another flag, such as the -l flag.
-r Reverses the sort order of the listing.
-t Sorts the listing by timestamp (latest first) instead of by name.
-L If the name argument is an alias, displays information on the file that it references. Typically used with another flag, such as the -l flag.
-a For each listed file, displays the absolute path of the alias that references it, if any.
-H Suppresses column headings.

If you specify all flags, then the command shows a union of their attributes, with duplicates removed. If you enter ls + , then the command returns information on all disk groups, including whether or not they are mounted.

Lists information about current ASM clients. A client is a database that uses disk groups managed by the ASM instance that ASMCMD is currently connected to.

Syntax and Description

If group is specified, information about only that disk group is displayed. The -H flag suppresses column headings.

This example displays information about the client accessing the dgroup1 disk group.

Lists all disk groups and their attributes.

Syntax and Description

Table 20-3 shows the attributes listed for each disk group.

Table 20-3 Attribute descriptions for lsdg command output

Attribute Name Description
State Mounted/connected state of the disk group
Type Disk group redundancy ( NORMAL , HIGH , EXTERNAL )
Rebal Y if a rebalance operation is in progress
Unbal Y if the disk group is in need of rebalancing
Sector Sector size in bytes
Block Block size in bytes
AU Allocation Unit size in bytes
Total_MB Size of the disk group in MB
Free_MB Free space in the disk group in MB, without regard to redundancy. From the V$ASM_DISKGROUP view.
Req_mir_free_MB Amount of space that must be available in the disk group to restore full redundancy after the worst failure that can be tolerated by the disk group. This is the REQUIRED_MIRROR_FREE_MB column from the V$ASM_DISKGROUP view.
Usable_file_MB Amount of free space, adjusted for mirroring, that is available for new files. From the V$ASM_DISKGROUP view.
Offline_disks Number of offline disks in the disk group. Offline disks are eventually dropped.
Name Disk group name

See Oracle Database Administrator’s Guide for more information on the attributes that are designated in Table 20-3 as being from the V$ASM_DISKGROUP view.

If group is specified, information about only that disk group is listed. The -H flag suppresses column headings.

The following example lists the attributes of the dgroup2 disk group.

mkalias

Creates an alias for the specified system-generated filename.

Syntax and Description

alias must be in the same disk group as the system-generated file. Only one alias is permitted for each ASM file.

The SQL*Plus equivalent of the mkalias command is:

The following example creates the sysaux.f alias for the fully qualified filename +DGROUP1/SAMPLE/DATAFILE/SYSAUX.257.555341961 .

mkdir

Creates ASM directories under the current directory.

Syntax and Description

The current directory can be a system-created or user-created directory. You cannot create a directory at the root (+) level.

The SQL*PLUS equivalent of the mkdir command is ALTER DISKGROUP dg_name ADD DIRECTORY dir, dir . . .

The following example creates the directories subdir1 and subdir2 at the disk group level in the disk group dgroup1 .

Displays the absolute path of the current directory.

Syntax and Description

Deletes the specified ASM files and directories.

Syntax and Description

If name is a file or alias, rm can delete it only if it is not currently in use by a client database. If name is a directory, rm can delete it only if it is empty (unless the -r flag is used) and it is not a system-generated directory. If name is an alias, rm deletes both the alias and the file that the alias references. (To delete just an alias and retain the file that the alias references, use the rmalias command.)

The SQL*Plus equivalents of the rm command are:

If you use a wildcard, rm deletes all matches except non-empty directories (unless the -r flag is used).

To recursively delete, use the -r flag. This enables you to delete a non-empty directory, including all files and directories in it and in the entire directory tree underneath it.

If you use the -r flag or a wildcard character, rm prompts you to confirm deletion before proceeding, unless you specify the -f flag.If a wildcard character matches an alias or a system-generated file that has an alias, both the alias and the system-generated file that it references are deleted. When using the -r flag, either the system-generated file or the alias needs to be present in the directory in which you run the rm command.

For example, if you have a user alias, +dg1/dir1/file.alias that points to +dg/ORCL/DATAFILE/System.256.146589651 , then running the rm -r +dg1/dir1 command will remove +dg1/dir1/file.alias as well as +dg/ORCL/DATAFILE/System.256.146589651 .

The following example deletes the alias alias293.f .

rmalias

Deletes the specified aliases, retaining the files that the aliases reference.

Syntax and Description

The SQL*Plus equivalent of the rmalias command is:

To recursively delete, use the -r flag. This enables you to delete all aliases in the current directory and in the entire directory tree beneath the current directory. If any user-created directories become empty as a result of deleting aliases, they are deleted also. System-created files and directories are not deleted.

The following example deletes the alias sysaux.f , retaining the datafile that it references.

Многомодульные программы на языке программирования ассемблер

Разбиение исходного текста программы на несколько файлов делает этот текст более понятным для программиста или нескольких программистов, участвующих в создании программного продукта. Однако остаётся нерешёнными ещё несколько задач:

  1. Программа-транслятор работает со всем исходным текстом целиком, ведь она соединяет все файлы перед трансляцией вместе. Поэтому время трансляции исходного текста программы остаётся значительным (и даже возрастает). В то же самое время программа никогда не переписывается целиком. Обычно изменяется только небольшой участок программы.
  2. При назначении переменных их количество ограничено программой-транслятором и может быть исчерпано при написании программы.
  3. Различные программисты, участвующие в создании программного продукта могут назначать одинаковые имена для своих переменных и при попытке соединения файлов в единую программу обычно возникают проблемы.

Все эти проблемы могут быть решены при раздельной трансляции программы. То есть было бы неплохо уметь транслировать каждый файл с исходным текстом программы отдельно и соединять затем готовые оттранслированные участки программы.

На первый взгляд раздельная трансляция не должна вызывать каких либо проблем. Однако это не так. При компиляции исходного текста программы транслятор составляет таблицу ссылок на константы, переменные и команды. Если при втором просмотре исходного текста программы, во время которого формируется объектный модуль, транслятор не обнаружит имени переменной или метки в своей таблице, то будет сформировано сообщение об ошибке и объектный модуль будет стёрт с диска компьютера.

Для того, чтобы транслятор вместо формирования сообщения об ошибке записал в объектный модуль информацию, необходимую для редактора связей, нужно использовать специальные директивы ссылок на внешние переменные или метки. Обычно эти директивы называются PUBLIC (общие) и EXTRN (внешние). Для ссылки на переменную или метку используется директива EXTRN. В этой директиве перечисляются через запятую метки и переменные, точное значение которых редактор связей должен получить из другого модуля и модифицировать все команды, в которых эти метки или переменные используются. Пример использования директивы EXTRN на языке программирования ASM-51:

Для того, чтобы редактор связей мог осуществить связывание модулей в единую программу, переменные и метки, объявленные по крайней мере в одном из модулей как EXTRN, в другом модуле должны быть объявлены как доступные для всех модулей при помощи директивы PUBLIC . Пример использования директивы PUBLIC на языке программирования ASM-51:

Использование нескольких модулей при написании программы увеличивает скорость трансляции и, в конечном итоге, скорость написания программы. Однако объявления переменных и имён подпрограмм внешних модулей загромождают исходный текст модуля. Кроме того, при использовании чужих модулей трудно объявить переменные и подпрограммы без ошибок. Поэтому обычно объявления переменных, констант и предварительные объявления подпрограмм хранят во включаемых файлах, которые называются файлами-заголовками. Правилом хорошего тона считается при разработке программного модуля сразу же написать файл-заголовок для этого модуля, который может быть использован программистами, работающими с Вашим программным модулем.

Для объединения нескольких модулей в исполняемую программу имена всех модулей передаются в редактор связей rl51.exe в качестве параметров при запуске этой программы. Пример вызова редактора связей из командной строки DOS для объединения трёх модулей:

rl51.exe progr.obj, modul1.obj, modul2.obj


В результате работы редактора связей в этом примере будет создан исполняемый модуль с именем progr. Формат записи информации в этом файле остаётся прежним — объектный. Это позволяет объединять модули по частям, то есть при желании можно из нескольких мелких модулей получить один более крупный.

В настоящее время часто пользуются интегрированными средами программирования, такими как Franclin или keil C, в состав которых входят язык программирования ASM‑51. В этих программах создание строки вызова редактора связей производится автоматически при настройке программного проекта, а вызов этой строки производится при трансляции программного проекта. Настройка программного проекта происходит при подключении к проекту новых программных модулей и при изменении свойств программного проекта, таких как разрешение или запрет создания карты памяти программы, выбор папки для хранения выходных файлов, разрешение или запрет помещения в выходной файл отладочной информации разрешение или запрет создания загрузочного файла.

  1. Микушин А.В. Сединин В.И. Однокристальный микроконтроллер семейства MCS-51 фирмы INTEL 8xC51GB Новосибирск: СибГУТИ, 2001
  2. Микушин А.В. Сединин В.И. Программирование микропроцессорных систем на языке ASM-51 Новосибирск: СибГУТИ, 2003
  3. Микушин А.В. Занимательно о микроконтроллерах. СПб, БХВ-Петербург, 2006.
  4. Микушин А.В., Сажнев А.М., Сединин В.И. Цифровые устройства и микропроцессоры. СПб, БХВ-Петербург, 2010.

Вместе со статьей «Реализация подпрограмм на языке ASM51» читают:

Module asm¶

Synopsis: (…) = asm_generic(MeshIm mim, int order, string expression, int region, [Model model, [‘Secondary_domain’, ‘name’,]] [string varname, int is_variable[, ], value], [‘select_output’, ‘varname1’[, ‘varname2]], …)

High-level generic assembly procedure for volumic or boundary assembly.

Performs the generic assembly of expression with the integration method mim on the mesh region of index region (-1 means all elements of the mesh). The same mesh should be shared by the integration method and all the finite element methods or mesh_im_data corresponding to the variables.

order indicates either that the (scalar) potential (order = 0) or the (vector) res >

model is an optional parameter allowing to take into account all variables and data of a model. Note that all enabled variables of the model will occupy space in the returned vector/matrix corresponding to their degrees of freedom in the global system, even if they are not present in expression .

The variables and constants (data) are listed after the region number (or optionally the model). For each variable/constant, a name must be given first (as it is referred in the assembly string), then an integer equal to 1 or 0 is expected respectively for declaring a variable or a constant, then the finite element method if it is a fem variable/constant or the mesh_im_data if it is data defined on integration points, and the vector representing the value of the variable/constant. It is possible to give an arbitrary number of variable/constant. The difference between a variable and a constant is that test functions are only available for variables, not for constants.

select_output is an optional parameter which allows to reduce the output vector (for order equal to 1) or the matrix (for order equal to 2) to the degrees of freedom of the specified variables. One variable has to be specified for a vector output and two for a matrix output.

Note that if several variables are given, the assembly of the tangent matrix/residual vector will be done considering the order in the call of the function (the degrees of freedom of the first variable, then of the second one, and so on). If a model is provided, all degrees of freedom of the model will be counted first, even if some of the model variables do not appear in expression .

For example, the L2 norm of a vector field “u” can be computed with:

The nonhomogeneous Laplacian stiffness matrix of a scalar field can be evaluated with:

Synopsis: M = asm_mass_matrix(MeshIm mim, MeshFem mf1[, MeshFem mf2[, int region]])

Assembly of a mass matrix.

Return a SpMat object.

Assembly of the matrix for the Laplacian problem.

with a a scalar.

Return a SpMat object.

Assembles of the matrix for the linear (isotropic) elasticity problem.

with defined via lambda_d and mu_d .

Return a SpMat object.

Assembles terms (tangent matrix and right hand side) for nonlinear elasticity.

The solution U is required at the current time-step. The law may be choosen among:

    ‘SaintVenant Kirchhoff’: Linearized law, should be avo >The parameters of the material law are described on the MeshFem mf_d . The matrix params should have nbdof(mf_d) columns, each row correspounds to a parameter.

The last argument selects what is to be built: either the tangent matrix, or the right hand side. If the incompressibility is considered, it should be followed by a MeshFem mf_p , for the pression.

Return a SpMat object (tangent matrix), vec object (right hand side), tuple of SpMat objects (incompressible tangent matrix), or tuple of vec objects (incompressible right hand side).

Assembly of the matrix for the Helmholtz problem.

= 0, with k complex scalar.

Return a SpMat object.

Assembly of the matrix for the Bilaplacian problem.

Return a SpMat object.

Assembly of the matrix for the Bilaplacian problem with Kirchhoff-Love formulation.

Return a SpMat object.

Assembly of a volumic source term.

Output a vector V , assembled on the MeshFem mf_u , using the data vector fd defined on the data MeshFem mf_d . fd may be real or complex-valued.

Return a vec object.

Assembly of a boundary source term.

G should be a [Qdim x N] matrix, where N is the number of dof of mf_d , and Qdim is the dimension of the unkown u (that is set when creating the MeshFem).

Return a vec object.

Assembly of Dirichlet conditions of type h.u = r .

Handle h.u = r where h is a square matrix (of any rank) whose size is equal to the dimension of the unkown u. This matrix is stored in H , one column per dof in mf_d , each column containing the values of the matrix h stored in fortran order:

if u is a 2D vector field.

Of course, if the unknown is a scalar field, you just have to set H = ones(1, N) , where N is the number of dof of mf_d .

This is basically the same than calling gf_asm(‘boundary qu term’) for H and calling gf_asm(‘neumann’) for R , except that this function tries to produce a ‘better’ (more diagonal) constraints matrix (when possible).

See also Spmat.Dirichlet_nullspace().

Assembly of a boundary qu term.

q should be be a [Qdim x Qdim x N] array, where N is the number of dof of mf_d , and Qdim is the dimension of the unkown u (that is set when creating the MeshFem).

Return a SpMat object.

asm_define_function ( name, nb_args, expression, expression_derivative_t=None, *args ) ¶

Synopsis: asm_define_function(string name, int nb_args, string expression[, string expression_derivative_t[, string expression_derivative_u]])

Define a new function name which can be used in high level generic assembly. The function can have one or two parameters. In expression all available predefined function or operation of the generic assembly can be used. However, no reference to some variables or data can be specified. The argument of the function is t for a one parameter function and t and u for a two parameter function. For instance ‘sin(pi*t)+2*t*t’ is a valid expression for a one parameter function and ‘sin(max(t,u)*pi)’ is a valid expression for a two parameters function. expression_derivative_t and expression_derivative_u are optional expressions for the derivatives with respect to t and u . If they are not furnished, a symbolic derivation is used.

Cancel the definition of a previously defined function name for the high level generic assembly.

asm_define_linear_hardening_function ( name, sigma_y0, H, *args ) ¶

Synopsis: asm_define_linear_hardening_function(string name, scalar sigma_y0, scalar H, … [string ‘Frobenius’])

Define a new linear hardening function under the name name , with initial yield stress sigma_y0 and hardening modulus H. If an extra string argument with the value ‘Frobenius’ is provided, the hardening function is expressed in terms of Frobenius norms of its input strain and output stress, instead of their Von-Mises equivalents.

asm_define_Ramberg_Osgood_hardening_function ( name, sigma_ref, *args ) ¶

Synopsis: asm_define_Ramberg_Osgood_hardening_function(string name, scalar sigma_ref, , scalar n[, string ‘Frobenius’])

Define a new Ramberg Osgood hardening function under the name name , with initial yield stress sigma_y0 and hardening modulus H. If an extra string argument with the value ‘Frobenius’ is provided, the hardening function is expressed in terms of Frobenius norms of its input strain and output stress, instead of their Von-Mises equivalents.

asm_expression_analysis ( expression, *args ) ¶

Synopsis: asm_expression_analysis(string expression [, ] [, der_order] [, Model model] [, string varname, int is_variable[, ], …])

Analyse a high-level generic assembly expression and print information about the provided expression.

Synopsis: (…) = asm_volumic(,CVLST], expr [, mesh_ims, mesh_fems, data…])

Low-level generic assembly procedure for volumic assembly.

The expression expr is evaluated over the MeshFem’s listed in the arguments (with optional data) and assigned to the output arguments. For details about the syntax of assembly expressions, please refer to the getfem user manual (or look at the file getfem_assembling.h in the getfem++ sources).

For example, the L2 norm of a field can be computed with:

The Laplacian stiffness matrix can be evaluated with:

Synopsis: (…) = asm_boundary(int bnum, string expr [, MeshIm mim, MeshFem mf, data…])

Low-level generic boundary assembly.

See the help for gf_asm(‘volumic’).

asm_interpolation_matrix ( mf, *args ) ¶

Synopsis: Mi = asm_interpolation_matrix(MeshFem mf, )

Build the interpolation matrix from a MeshFem onto another MeshFem or a set of points.

Return a matrix Mi , such that V = Mi.U is equal to gf_compute(‘interpolate_on’,mfi). Useful for repeated interpolations. Note that this is just interpolation, no elementary integrations are involved here, and mfi has to be lagrangian. In the more general case, you would have to do a L2 projection via the mass matrix.

Mi is a SpMat object.

asm_extrapolation_matrix ( mf, *args ) ¶

Synopsis: Me = asm_extrapolation_matrix(MeshFem mf, )

Build the extrapolation matrix from a MeshFem onto another MeshFem or a set of points.

Return a matrix Me , such that V = Me.U is equal to gf_compute(‘extrapolate_on’,mfe). Useful for repeated extrapolations.

Me is a SpMat object.

asm_integral_contact_Uzawa_projection ( bnum, mim, mf_u, U, mf_lambda, vec_lambda, mf_obstacle, obstacle, r, *args ) ¶

Synopsis: B = asm_integral_contact_Uzawa_projection(int bnum, MeshIm mim, MeshFem mf_u, vec U, MeshFem mf_lambda, vec vec_lambda, MeshFem mf_obstacle, vec obstacle, scalar r [, [, int option[, scalar alpha, vec W]]])

Specific assembly procedure for the use of an Uzawa algorithm to solve contact problems. Projects the term $-(lambda — r (u_N-g))_-$ on the finite element space of $lambda$.

Return a vec object.

asm_level_set_normal_source_term ( bnum, mim, mf_u, mf_lambda, vec_lambda, mf_levelset, levelset ) ¶


Performs an assembly of the source term represented by vec_lambda on mf_lambda considered to be a component in the direction of the gradient of a levelset function (normal to the levelset) of a vector field defined on mf_u on the boundary bnum .

Модуль utils asm

English version of site here.

SASM (SimpleASM) — простая кроссплатформенная среда разработки для языков ассемблера NASM, MASM, GAS, FASM с подсветкой синтаксиса и отладчиком. В SASM Вы можете легко разрабатывать и выполнять программы, написанные на языке ассемблера. Вводите код в форму и запускайте приложение. Программа работает «из коробки» и хорошо подойдет для начинающих изучать язык ассемблера. Основана на Qt. Распространяется по свободной лицензии GNU GPL v3.0.

Для загрузки программы на Linux выбирайте Ваш дистрибутив в окне «Build Results» справа.

Вы также можете собрать SASM из исходников, которые можно найти в GitHub репозитории или скачать SASM в zip-архиве для Windows.

Если Вы пользователь Mac, возможно, Вам поможет эта заметка об установке SASM на Mac (спасибо Brian R. Hall).

Поддержите проект

WebMoney: Z282020332582 и R331674303467

О программе

В SASM Вы можете легко разрабатывать и выполнять программы, написанные на языках ассемблера NASM, MASM, GAS, FASM. Вводите код в форму и запускайте приложение. В Windows также возможен запуск приложения в отдельном окне. Входные данные указывайте в поле «Ввод». В поле «Вывод» Вы сможете увидеть результат работы программы. При этом все сообщения и ошибки компиляции будут выводиться в форму снизу. Вы можете сохранять исходный или скомпилированный (exe) код программы в файл, а также загружать свои программы из файла.

Программа поддерживает работу с несколькими проектами – новые файлы открываются и создаются в новых вкладках. При выходе из программы текущий набор открытых файлов сохраняется. При следующем запуске Вы сможете восстановить предыдущую сессию. В параметрах настраивается шрифт, цветовая схема и текст, отображающийся при создании нового файла. Интерфейс программы доступен на восьми языках (русский, английский, турецкий (спасибо Ali Goren), китайский (спасибо Ahmed Zetao Yang), немецкий (спасибо Sebastian Fischer), итальянский (спасибо Carlo Dapor), польский (спасибо Krzysztof Rossa), иврит (спасибо Elian Kamal), испанский (спасибо Mariano Cordoba)). Все окна в программе плавающие, с возможностью закрепления в одной из множества позиций. Имеется возможность переназначения горячих клавиш.

Стандартное меню «Правка» дополнено возможностью комментирования/раскомментирования выделенного куска кода и создания/удаления отступа в 4 пробела (Tab/Shift+Tab).

В SASM вы можете находить ошибки в своих программах с помощью интерфейса к отладчику gdb. В программе можно просматривать значения регистров и переменных, а также устанавливать точки останова и перемещаться по отлаживаемой программе. Дополнительно имеется возможность выполнять произвольные команды отладчика gdb, результаты которых будут отображаться в логе.

SASM полностью поддерживает работу с четырьмя ассемблерами NASM, MASM, GAS, FASM в двух режимах — x64 и x86, переключаться между которыми можно в настройках на вкладке «Построение». Там же можно изменить опции ассемблера и компоновщика и выбрать, какие программы будут использоваться для ассемблирования и компоновки.

Устранение неполадок

Если у Вас что-то работает не так (происходят ошибки при компиляции, отладке и др.), пожалуйста, прочитайте главу «Устранение неполадок» в справке в программе (F1) или в Wiki проекта на GitHub. Возможно, там Вы сможете найти полезный совет для решения Вашей проблемы.

Библиотека макросов для NASM «io.inc»

В программу включена библиотека макросов для NASM «io.inc». В ней есть кроссплатформенные команды ввода-вывода и макросы: CMAIN — точка входа и CEXTERN для доступа к внешним функциям на языке C. Подробнее о ее командах Вы можете узнать здесь или ниже.

Имя макроса Описание макроса
PRINT_UDEC size, data

PRINT_DEC size, data

Вывод числовых данных заданных параметром data в 10-чном представлении. Параметр size – число, указывающее размерность данных в байтах; допускаются значения 1, 2, 4, 8 (x64). В качестве параметра data может выступать числовая константа, символьная константа, имя переменной, имя регистра или адресное выражение (без спецификатора размера данных в памяти). Если задается регистр большего размера, то берется заданное параметром size количество младших разрядов. PRINT_UDEC интерпретирует число как беззнаковое, PRINT_DEC — как знаковое.
PRINT_HEX size, data Аналогично предыдущему, но данные выводятся в 16-чном представлении.
PRINT_CHAR ch Печатается символ, заданный параметром ch. В качестве параметра может выступать численная константа, символьная константа, имя переменной, имя регистра или адресное выражение (без спецификатора размера данных в памяти). Печатается всегда содержимое 8 младших разрядов.
PRINT_STRING data Печать строки текста, оканчивающейся символом с кодом 0. В качестве параметра можно передавать строковую константу, имя переменной или адресное выражение (без спецификатора размера данных в памяти). В случае печати строковой константы, наличие символа с кодом 0 в конце строки необязательно.
NEWLINE Макрос переводит печать на новую строку.
GET_UDEC size, data

GET_DEC size, data

Ввод числовых данных в 10-чном представлении с клавиатуры. Размер вводимых данных ограничен параметром size, который задается числом (1, 2, 4, 8 (x64)). Введенные данные обрезаются соответствующим образом. Параметр data – либо имя переменной, либо имя регистра, либо адресное выражение (без спецификатора размера данных в памяти). Если задается регистр большего размера, то старшие разряды заполняются знаковым битом в случае GET_DEC и нулями в случае GET_UDEC. GET_UDEC считывает беззнаковое число, GET_DEC — знаковое. Запрещается использовать в качестве параметра регистр esp.
GET_HEX size, data Аналогично предыдущему, но данные задаются в 16-чном представлении с префиксом 0x.
GET_CHAR data Аналогично предыдущему, но происходит считывание одного символа, нажатие Enter не требуется. Более того, нажатие Enter будет расцениваться как ввод управляющих символов перевода строки: 0xD 0xA в ОС Windows, 0xA в ОС *nix. Если параметр – регистр, размер которого больше 1 байта, значение считанного символа будет дополнено нулями.
GET_STRING data, maxsz Ввод последовательности символов длиной не более чем (maxsz-1). Чтение последовательности останавливается на EOF или переводе строки, причем перевод строки сохраняется в буфере. В конец считанной строки добавляется символ с кодом 0. Параметр data – либо имя переменной, либо адресное выражение (без спецификатора размера данных в памяти). Параметр maxsz – регистр или числовая константа.

Реализация

Windows

В качестве ассемблера для NASM используется nasm 2.11.02, в качестве компоновщика — gcc 4.6.2 из MinGW (gcc 4.8.1 из MinGW64 в режиме x64) или ld 2.22 из MinGW (ld 2.23.2 из MinGW64 в режиме x64).

Версии ассемблеров и компоновщиков для NASM подобраны с учетом рекомендуемых программ для курса «Архитектура ЭВМ и язык ассемблера» ВМК МГУ 1-го потока.

Также в программу включен отладчик gdb 7.4 (7.6 для x64) из пакета MinGW и немного измененная для отладки библиотека макросов ввода-вывода.

Начиная с версии 3.0, в SASM включены fasm 1.71.39 и gas 2.23.1 из MinGW (gas 2.23.2 из MinGW64).

Ассемблер MASM невозможно было включить в сборку из-за его лицензии. Чтобы им воспользоваться, Вы должны установить MASM на Ваш компьютер с сайта http://www.masm32.com/ и указать пути до ассемблера (ml.exe, путь обычно «C:/masm32/bin/ml.exe») и до компоновщика (link.exe, путь обычно «C:/masm32/bin/link.exe») в соответствующих полях на вкладке «Построение».

Под Windows SASM после установки сразу готов к работе.

Linux

Для работы программы на Linux должны быть установлены: nasm или gas (если их планируется использовать, fasm уже включён в сборку), gcc, gdb (для отладки).

Больше информации о программе и её использовании можно получить в Wiki проекта на GitHub.

История изменений:

08.10.2020 — версия 3.10.1 (zip, exe):

  • Исправлена ошибка, при которой из компоновки исключались файлы, необходимые для работы функций ввода-вывода библиотеки «io.inc».

01.10.2020 — версия 3.10.0 (zip, exe):

  • Поддержка BSD OS (спасибо Martinfx).
  • Исправлена ошибка, приводящая к неработоспособности отладчика при использовании gcc с опцией PIE по умолчанию (спасибо lberserq).
  • Добавлена поддержка испанского языка (спасибо Mariano Cordoba).
  • Небольшие исправление в настройках программы.

12.09.2020 — версия 3.9.0 (zip, exe):

  • Более удобный просмотр значений по адресу.
  • Исправлена ошибка, приводящая к падению отладчика (спасибо lberserq).
  • Добавлена поддержка польского языка (спасибо Krzysztof Rossa).
  • Добавлена поддержка иврита (спасибо Elian Kamal).

19.02.2020 — версия 3.8.0 (zip, exe):

  • Улучшен разбор регистров при отладке.
  • Добавлена опция запуска ассемблера в текущей директории.
  • Добавлена поддержка итальянского языка.

30.10.2020 — версия 3.7.0 (zip, exe):

  • Добавлена поддержка китайского языка.
  • Добавлена поддержка немецкого языка.
  • Исправлена ошибка, приводящая к невозможности повторного запуска программы после аварийного завершения.
  • Исправлена ошибка, при которой вывод программ, содержащий непечатные символы, не отображался полностью.

25.09.2020 — версия 3.6.0:

  • Добавлена поддержка турецкого языка.
  • Улучшено добавление отступов при нажатии клавиши Tab.

26.08.2020 — версия 3.5.1:

  • Исправлены ошибки с отладкой, drag & drop и другие мелкие ошибки.

19.03.2020 — версия 3.5.0:

  • Поддержка компоновщика GoLink.
  • Исправлена ошибка с неправильным именем файла при отркытии или сохранении.

11.02.2020 — версия 3.4.0:

  • Изменение цвета номеров строк.
  • Возможность отключения автоматической вставки отладочной строки.

27.01.2020 — версия 3.3.0:

  • Однооконный режим.
  • Функция drag & drop для открытия файлов. Чтобы открыть файл, можно просто перетащить его на окно программы.
  • Улучшенная справка: расширена часть «Устранение неполадок», добавлена часть «Настройка системы сборки».
  • Исправление множества ошибок, включая ошибку с системно-зависимыми путями и ошибку при показе регистров x87 FPU.

14.06.2015 — версия 3.2.0:

  • Добавлена возможность отключения запуска компоновщика.
  • Обновлён FASM: новая версия 1.71.39.
  • Исправлены некоторые ошибки, возникающие при отладке.

27.05.2015 — версия 3.1.4: исправлена ошибка, возникающая при использовании в системе локализованной версии objdump.

30.03.2015 — версия 3.1.3: добавлено отображение информации о полученных программой сигналах (в т. ч. об ошибках, возникающих в ходе её работы) при отладке.

27.03.2015 — версия 3.1.2: улучшена работа при отладке файлов с директивой include.

24.03.2015 — версия 3.1.1: исправлены ошибки с подсветкой синтаксиса.

29.08.2014 — версия 3.1.0: изменения из pull requsts и issues на GitHub — перемещаемые вкладки, сообщения об ошибках при неправильном ассемблере или компоновщике, улучшенная отмена и постановка отступа в 4 пробела, опция noexecstack для исполняемых файлов в Linux.

24.07.2014 — версия 3.0.1: добавлена возможность просмотра дополнительных регистров (xmm, st и других).

13.07.2014 — версия 3.0:

  • Добавлена поддержка новых ассемблеров, кроме NASM — GAS, MASM, FASM, включая подсветку синтаксиса, отладку и поддержку архитектур x86 и x64. Появилась возможность выбрать вручную ассемблер и компоновщик, а также изменить опции сборки программы.
  • Значительно улучшена работа отладчика, стало возможным отлаживать программы даже без отладочной информации для GDB (например, написанные на MASM). В отладчике добавлена возможность приостановить программу, а также установить точку останова во время её выполнения.
  • Добавлена папка для include файлов.
  • Исправлены проблемы с загрузкой процессора текстовым редактором при открытии больших файлов с исходным кодом. Исправлена ошибка с нарушением работы интерфейса после открытия окна настроек. Исправлено множество мелких ошибок и недочетов.

23.04.2014 — версия 2.3.1: исправлена ошибка, возникающая при наличии пробелов в пути до временной директории (в частности восстановлена работа SASM на Windows XP).

03.04.2014 — версия 2.3:

  • Добавлена возможность выбора режимов x64 или x86 и изменения опций ассемблера и компоновщика. Добавлен инструментарий для компиляции и отладки 64-битного кода. Реализована подсветка 64-битных регистров и команд. Библиотека «io.inc» адаптирована для использования в 64-битных приложениях.
  • Добавлена подсветка команд макроассемблера NASM.
  • Исправлено множество мелких ошибок, в том числе улучшено отображение окна переменных при отладке, исправлена ошибка при считывании в стек макросами из «io.inc».

16.02.2014 — версия 2.2:

  • Значительно улучшен интерфейс программы и её юзабилити, исправлено множество ошибок. Добавлены выбор цветов фона и текста, а также полная настройка подсветки синтаксиса. Окна ввода-вывода и отладки стали плавающими (docking) окнами с многочисленными вариантами их расположения. Улучшены виджеты отображения регистров и памяти (добавлены автоподгонка под текст и возможность копирования), сделана возможность запоминания их состояния. Улучшен механизм точек останова — добавлена возможность остановки на метке (на строке с кодом ниже) и возможность её установки по горячей клавише. Улучшена отладка макросов — теперь они неотличимы от обычных инструкций. К действиям добавлены иконки, сделаны тулбары.
  • Комбинации горячих клавиш приведены в соответствие со стандартными, добавлена возможность их переназначения.

13.11.2013 — версия 2.1:

  • Исправлено множество ошибок, исправлены проблемы совместимости — созданы установочные пакеты для многих Linux-систем на OBS, налажена совместимость с Qt 4, а также упрощена сборка из исходников.
  • Сделано много улучшений, расширена функциональность. В частности, в отладчике — добавлены: просмотр регистров, просмотр памяти, точки останова и команда «продолжить»; улучшены: выполнение произвольных команд gdb, подсветка текущей строки, последовательный вывод во время отладки (изменены макросы io.inc).
  • Компиляция теперь выполняется во временных папках — пропала необходимость в специальных правах при запуске программы.
  • Добавлена отметка о несохраненном документе. Добавлен последовательный вывод в программах. Добавлено отображение статуса завершения программы. Добавлен вывод времени работы программы. Добавлен выбор шрифта.
  • Обновлена справка. Сделана новая иконка. Еще множество минорных улучшений и исправлений.

04.06.2013 — версия 2.0: сделаны все запланированные изменения — реализован отладчик, улучшена подсветка, стало возможно работать с несколькими файлами, SASM (новое название) полностью переписан на Qt и теперь с открытым кодом и кроссплатформен. Исходники выложены на GitHub, сюда же переехал и сайт. Если Вам нужны более ранние версии программы, Вы можете их найти на предыдущем сайте.

21.04.2013 — версия 1.0.4 — исправлена ошибка с CEXTERN.

18.03.2013 — версия 1.0.3 — исправлены ошибки подсветки синтаксиса, теперь подсвечиваются все ключевые слова NASM, исправлен запуск программ на MASM.

10.03.2013 — версия 1.0.2 — исправлены ошибки, добавлено автосохранение кода и пути.

07.03.2013 — появилась первая версия программы — 1.0.0.

Module hivm2:: asm_parser:: util [ − ] [src]

Functions

Convert a byte array to a heap-allocated String .

Tries the given matcher function; if it succeeds then it consumes the input and returns the corresponding IResult::Done with Some(output) , for all other cases (error, incomplete) it does not consume any input but still returns IResult::Done with a None output.

Tries each of a given set of matchers, returning the first one that matches successfully. If all fail then it returns an IResult::Error at the position where it failed.

Type Definitions

u8 byte array that all parsing functions use for input/remaining parse subject data.

Alias for Nom’s IResult that includes the PBytes byte array type alias for subject data.

A boxed standard parser function that takes a byte array as input and returns a standard parsing result.

Keyboard Shortcuts

Search Tricks

Prefix searches with a type followed by a colon (e.g. fn: ) to restrict the search to a given type.

Accepted types are: fn , mod , struct , enum , trait , type , macro , and const .

Илон Маск рекомендует:  Вычислить растояние между двумя точками на карте
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL