Не хочу Си. Хочу низкоуровневое программирование.
сложновато звучит
Как мне узнать размер аргументов?
как их можно по-быстрому считать?
1, 1, 1, 2, 2, 3
сколько повторяющихся элементов -- два (1 и 2) или 5 (три единицы и две двойки)?int reps = 0;
int i, j;
for (i = m1; i <= m2; ++i) {
for (j = m1; j <= m2; ++j) {
if (i != j && arr[i] == arr[j]) {
if (i < j)
++reps;
break;
}
}
}
Аргументы printf в виде слов кидаются на стек по порядку
И да, это undefined behaviour, кто ж спорит.
В этом примере я пытаюсь переместить из rsi в rdx три числа, а потом вывести из нулевого индекса rdx в терминал число. В данном случае должно быть 1, но почему-то 0.
movzbq (%rdi), %rax
, только rdi уже указывает на байт после последнего скопированного байта. movzbq -3(%rdi), %rax
тебе поможет.
armadillo-cld, проще всего -- в заголовочных файлах где они определены.
Прямее всего -- написав программу которая будет печатать sizeof нужных типов.
Но зачем, если можно сдампить список экспортированнх функций из нужных библиотек, прогнать их через sed скрипт типа того:
's/\([^@]*\)/#define \1 \1/'
и подключить получившийся файл?