Типы long long и unsigned long long — КиберПедия 

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Типы long long и unsigned long long

2022-10-05 30
Типы long long и unsigned long long 0.00 из 5.00 0 оценок
Заказать работу

Типы long long и unsigned long long – 64-битные целочисленные типы, знаковый и беззнаковый соответственно. Их можно использовать во всех языковых конструкциях, где разрешены все другие целочисленные типы. Для них существует поддержка со стороны библиотеки, аналогичная таковой поддержке для других целочисленных типов.

К примеру, в заголовочном файле limits.h содержатся макросы LLONG_MIN, LLONG_MAX и ULLONG_MAX, обозначающие соответственно минимальное и максимально значения типа long long и максимальное значение типа unsigned long long.

О поддержке этих типов дополнительно можно посмотреть в главе Раздел 4.3.4, «Функции преобразования чисел в строки и наоборот»

Поддержка кода в соответствии с ограничениями платформы

Генерируемый компилятором код соответствует ограничениям аппаратной платформы на следование инструкций. Достигается это путём вставления инструкций nop между инструкциями.

Библиотеки

Стандартные заголовочные файлы для библиотеки С и заголовочные файлы поддержки языка С++ находятся в подкаталоге Include каталога установки. Заголовочные файлы полной библиотеки С++ находятся в подкаталоге STL; при их использовании не нужно добавлять в пути поиска заголовочных каталог Include.

Библиотечные файлы находятся в подкаталоге Lib каталога установки. Библиотка rtl.lib содержит функции поддержки языка С, она необходима для любых программ написанных на С/С++. Библиотека clib.lib содержит функции Стандартной библиотеки С. Библиотека cpplib.lib содержит функции поддержки языка С++. Библиотека stllib.lib содержит функции Стандартной библиотеки С++.

6.1 Макрос _alloca

Макрос _alloca предназначен для выделения памяти в стеке, в «окне» стека (stack frame) текущей функции, для нужд временного хранения информации. Таким образом память выделяется гораздо быстрее, чем с помощью функции malloc(), и не требует специального освобождения (освобождается автоматически при выходе из функции).

Параметр макроса – размер памяти, который необходимо выделить, в байтах. Результат макроса – указатель типа void* на выделенную память. Память, выделенную с помощью _alloca, можно использовать до выхода из функции, в которой она была выделена (в том числе и в вызванных из неё функциях).

Для использования макроса _alloca необходимо включить заголовочный файл malloc.h.

Работа с регистрами через псевдопеременные

Для удобства обращения с регистрами напрямую из C/C++ программы, поддержаны регистровые псевдопеременные. Чтобы прочесть значение из регистра, достаточно прочесть значение соответствующей переменной. Аналогично, чтобы записать значение в регистр, достаточно присвоить его соответствующей переменной. Переменные, соответствующие регистрам, запись в которые запрещена, имеют тип с модификатором const. В таблицах 6.1 и 6.2 приведены регистры и регистровые пары, доступные по чтению и записи. Указанные в таблице 6.3 регистры доступны в NM6405, но отсутствуют в NM6403.

Таблица 6.1 - Регистры и регистровые пары, доступные по чтению/записи

Регистры

Регистровые пары
ar0... ar7(sp) gr0... gr7 (ar0, gr0)... (ar7, gr7)
icc0 ica0 (icc0, ica0)
icc1 ica1 (icc1, ica1)
occ0 oca0 (occ0, oca0)
occ1 oca1 (occ1, oca1)
t0 t1 (t0, t1)
pswr Pc (pswr, pc)
lmicr Gmicr -

Таблица 6.2 - Регистры и регистровые пары, доступные только по записи

Запись 32-разрядных слов

Запись 64-разрядных слов
nb1l nb1h nb1
sbl Sbh sb
f1crl f1crh f1cr
f2crl f2crh f2cr
vrl Vrh vr

Таблица 6.3 - Регистры NM6405

Регистр Разрядность Доступ на чтение Доступ на запись
pcr 32 + +
lema 32 + +
gema 32 + +
lima 14 + +
gima 14 + +
irr 12 + -
imr 12 + +
gpa 12 + +
lmcr0 32 - +
lmcr1 32 - +
gmcr0 32 - +
gmcr1 32 - +
dmac0 14 + +
dmac1 14 + +
iop 8 + +
iopcr 8 + +

 

Имена регистровых псевдопеременных состоят из двух символов подчеркивания "_" и имени соответствующего регистра.

__ar0 … __ar7, __gr0 … __gr7, __icc0, __icc1, __nb1l, __nb1 …

Аналогичным образом могут быть прочитаны/присвоены значения регистровым парам. Имена соответсвующих регисровым парам псевдопеременных формируются аналогичным образом: два символа подчеркивания "_" и имена регистров пары.

__ar0gr0, __ar1gr1, __ar7gr7, __icc0ica0...

Псевдоперемнные объявлены в заголовочном файле neuromatrix.h.

Внимание

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


Поделиться с друзьями:

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.