Size: a a a

Chaos Constructions Demo/Retro

2020 April 13

A

Anton "Dart" Nikolaev in Chaos Constructions Demo/Retro
А почему GCC а не VS ?
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
думаю, может симм72 мод сделать?
источник

ЕК

Евгений Красников (Jin X) in Chaos Constructions Demo/Retro
В чём разница-то?
источник

ЕК

Евгений Красников (Jin X) in Chaos Constructions Demo/Retro
Anton "Dart" Nikolaev
А почему GCC а не VS ?
Потому что под Linux.
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
хотя смысла нет, проще эмулятор гуся на стм32+цплд слабать :)
источник

ЕК

Евгений Красников (Jin X) in Chaos Constructions Demo/Retro
Ну так надо в данном случае, короче.
источник

DS

Dolphin Soft in Chaos Constructions Demo/Retro
Евгений Красников (Jin X)
В инпуте.
Так и ты в инпуте прописал.
Это был не я
источник

DS

Dolphin Soft in Chaos Constructions Demo/Retro
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
Евгений Красников (Jin X)
Оооо, а оно работает на ISA-портах из ДОСа?
220h там и т.п.?
сам бластер на 220, а wavetable синт сидит на алиасах (620,A20,E20)
источник

ЕК

Евгений Красников (Jin X) in Chaos Constructions Demo/Retro
Опа-опа... про префикс "&" интересно.
источник

ЕК

Евгений Красников (Jin X) in Chaos Constructions Demo/Retro
нет, не хочет
источник

DS

Dolphin Soft in Chaos Constructions Demo/Retro
🤔 ты хоть доку то открой для начала )
источник

ЕК

Евгений Красников (Jin X) in Chaos Constructions Demo/Retro
Евгений Красников (Jin X)
https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Clobbers-and-Scratch-Registers

Clobber descriptions may not in any way overlap with an input or output operand. For example, you may not have an operand describing a register class with one member when listing that register in the clobber list. Variables declared to live in specific registers (see Explicit Register Variables) and used as asm input or output operands must have no part mentioned in the clobber description. In particular, there is no way to specify that input operands get modified without also specifying them as output operands.
Вот же
источник

ЕК

Евгений Красников (Jin X) in Chaos Constructions Demo/Retro
#include <stdio.h>

#define mov_blk(src, dest, numwords) \
__asm__ __volatile__ (\
"cld\n\t" \
"rep\n\t" \
"movsl"                                  \
:                                        \
: "S" (src), "D" (dest), "c" (numwords)  \
: "%ecx", "%esi", "%edi"                 \
)

int main()
{
 int a[10],b[10];
 mov_blk(a,b,10);
 return 0;
}

Результат:
1.cpp:16:18: error: 'asm' operand has impossible constraints
  16 |   mov_blk(a,b,10);
источник

ЕК

Евгений Красников (Jin X) in Chaos Constructions Demo/Retro
Не знаю, почему такие противоречивые доки...
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
Anton "Dart" Nikolaev
А почему GCC а не VS ?
у студии есть еще маленький минус - в x64 режиме inline asm недоступен
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
приходится танцевать с интринсиками или писать во внешнем асме и линковаться :)
источник

ЕК

Евгений Красников (Jin X) in Chaos Constructions Demo/Retro
Ну и там нет механизма с этими inputs/outputs — это тоже часть оптимизации.
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
в watcom c++ можно фигачить pragma aux с явным указанием используемых регистров
источник

AV

Artem Vasilev in Chaos Constructions Demo/Retro
и делать кастомные соглашения о вызовах
источник