Главная страница
Навигация по странице:

  • Если значение равно побитовуму ИЛИ

  • unsigned int

  • int

  • запускается

  • )

  • компилятор ТСС. Tiny c compiler by Fabrice Bellard Описание алгоритмов


    Скачать 191.99 Kb.
    НазваниеTiny c compiler by Fabrice Bellard Описание алгоритмов
    Анкоркомпилятор ТСС
    Дата08.11.2019
    Размер191.99 Kb.
    Формат файлаodt
    Имя файлаtcc book.odt
    ТипДокументы
    #94047
    страница34 из 38
    1   ...   30   31   32   33   34   35   36   37   38
    sf и df только sf содержит ненулевое значение, происходит следующая обработка: Если dbt равна VT_BOOL, вызывается vpushi() и gen_op() Если dbt содержит другое время, происходит следующая обработка: Если dbt не содержит побитовое ИЛИ VT_INT и VT_UNSIGNED, не содержит побитовое ИЛИ VT_LLONG VT_UNSIGNED и не содержит VT_LLONG, dbt обновляется значением VT_INT Если c содержит ненулевое значение, происходит побработака dbt Если значение равно побитовуму ИЛИ VT_LLONG и VT_UNSIGNED, или равно VT_LLONG, управление прередается на метку do_ftoi Если значение равно побитовуму ИЛИ VT_INT и VT_UNSIGNED, происходит обработка sbt Если значение кодирует VT_FLOAT, в поле ui структуры СValue последней SValue записывается значение поля d той же СValue. Перед этим значение приводится к типу unsigned int Если значение кодирует VT_DOUBLE, в поле ui структуры СValue последней SValue записывается значение поля d той же СValue. Перед этим значение приводится к типу unsigned int Если значение кодирует VT_LDOUBLE, в поле ui структуры СValue последней SValue записывается значение поля d той же СValue. Перед этим значение приводится к типу unsigned int Если dbt содержит другое значение, запускается другая обработка sbt Если значение кодирует VT_FLOAT, в поле i структуры СValue последней SValue записывается значение поля d той же СValue. Перед этим значение приводится к типу int Если значение кодирует VT_DOUBLE, в поле i структуры СValue последней SValue записывается значение поля d той же СValue. Перед этим значение приводится к типу int Если значение кодирует VT_LDOUBLE, в поле i структуры СValue последней SValue записывается значение поля d той же СValue. Перед этим значение приводится к типу int Если c содержит нулевое значение, запускается gen_cvt_ftoi1(). Этот запуск предваряет метка do_ftoi Если dbt содержит VT_INT и биты переданного типа содержат биты побитового ИЛИ VT_BTYPE и VT_UNSIGNED отличные от тех что содержатся в dbt, то поле t структуры CType связанной с последней SValue, вызывается gen_cast() Если sf и и df содержат нулевые значения, проверяется кодирует ли dbt значение VT_LLONG, если проверки проходят, но при этом sbt кодирует тип отличный от VT_LLONG, происходит следующая обработка: Если c содержит ненулевое значение, проверяется содержит ли sbt побитовое ИЛИ VT_INT и VT_UNSIGNED. В этом случае в поле ll структуры СValue последней SValue записывается значение поля ui той же СValue, иначе в поле ll структуры СValue последней SValue записывается значение поля i той же СValue Если c содержит нулевое значение, вызывается gv(). Если sbt побитовое ИЛИ VT_INT и VT_UNSIGNED, вызывается vpushi() и gv(R) иначе вызываются gv_dup(), vpushi(), gen_op() Поле r2 предпоследней SValue обновляется значением поля r последней SValue. Вызывается vpop() Если предидущая проверка dbt не проходит, проверяется содержит ли она VT_BOOL в этом случае вызываются vpushi(0) и gen_op() Если предидущая проверка dbt не проходит, проверяется кодирует ли она VT_BYTE или VT_SHORT. В этом случае вызывается force_charshort_cast(
    1   ...   30   31   32   33   34   35   36   37   38


    написать администратору сайта