169 похожих чатов

@FAssembler не знаешь, fasm поддерживает thumb?

46 ответов

125 просмотров

Это что?

КТ315
Это что?

Набор инструкций, например на STM32 используется

Наверно только в fasmg что-то такое есть.

в gas вроде есть

владик
в gas вроде есть

В gas точно есть, но в gas нет макросов особо

Александр Белокопытов
В gas точно есть, но в gas нет макросов особо

Если в вашем ассемблере нет макросов, то даже не зовите меня в этот лоу-левел

The Bird of Hermes
Если в вашем ассемблере нет макросов, то даже не з...

Я ошибся, они там есть, но вроде куда хуже, чем в fasm

🦝 Katowski Kotovsky
Сегрегация? Асм для белых?😊

Стандарты современных компиляторов должны быть высокими)

The Bird of Hermes
Стандарты современных компиляторов должны быть выс...

Зачем в gas макросы, если он используется в "с" как backend?

🦝 Katowski Kotovsky
Зачем в gas макросы, если он используется в "с" ка...

Например если нужно использовать его напрямую. Вот походу под Thumb2 придётся использовать именно его...

КТ315
Зачем, если можно FASM?

Так там есть поддержка thumb2 или нет? Или есть в виде расширения?

Александр Белокопытов
Так там есть поддержка thumb2 или нет? Или есть в ...

В виде .inc можно добавить макросами, либо в FASMARM, вроде, есть.

Александр Белокопытов
Например если нужно использовать его напрямую. Вот...

У каждой вещи есть свое предназначение. Вот у задницы - предназначение - делать дефекацию. И не стоит у этой задницы искать другие применения.

The Bird of Hermes
В смысле как бэкенд?

На С весь код, а на GAS несколько строчек какой-то ерунды, для оптимизации, или для узких мест. Всё полностью верно, для этого GAS и создан - его использовать только совместно с С, иначе он бы не был вшит в С-компилятор.

КТ315
Они там и не нужны.

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

The Bird of Hermes
Ну допустим я хочу сделать функцию с переменным ко...

В С это без макросов делается, посмотри как там printf реализован.

The Bird of Hermes
Так в С макросы отстой

Си выживает благодаря тому что он консервативен и практически не меняется лет 50. Ему есть модные аналоги, но вряд-ли они будут поддержаны в микроконтроллерах.

КТ315
В С это без макросов делается, посмотри как там pr...

В принтфе тебе надо все равно количество аргументов считать

fasmarm поддерживает thumb.

The Bird of Hermes
В принтфе тебе надо все равно количество аргументо...

Нет, там указывается что-то вроде int func(...), а внутри просто цикл уже по аргументам, и всё.

КТ315
Нет, там указывается что-то вроде int func(...), а...

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

КТ315
Нет, там указывается что-то вроде int func(...), а...

Я знаю, вот только количество аргументов не передаётся в таком случае

s54820
В таком виде не заведётся, нужно хотя бы один аргу...

А, ну да. Там через функцию va_start. Собственно, вот и минус С - там всё через внешние функции, и остаётся молиться на компилятор, чтобы он эти функции мог завернуть в нативные элементарные пару инструкций.

Александр Белокопытов
Набор инструкций

и чем он так примечателен? почему его так выделяют? а если выделяют, то есть что то иное.

КТ315
А, ну да. Там через функцию va_start. Собственно, ...

Там ещё и какой-то va_end для очистки памяти. Он память что-ли выделяет? В ассемблере это был бы тупо цикл по стеку.

Aiwan \ (•◡•) / _bot
и чем он так примечателен? почему его так выделяю...

Да ничем особенно, просто это набор инструкций, используемый на микроконтроллерах Cortex-M

КТ315
А, ну да. Там через функцию va_start. Собственно, ...

А это не функция. Это макрос встроенный, он разворачивается в адресную арифметику, то есть в мовы и адды. Буквально mov eax,[base+counter+4]; counter += 4. Но это пока у тебя не регистры в 64-битной конвенции. Вот в 64-битах там боль. Но ты на асме тоже не сможешь магически регистры по индексу выбирать. va_end это потому что люди думали не только про x86. В каких-то архитектурах может понадобиться очистка, корректировка стека или ещё что-то. В x86 оно ничего не делает.

КТ315
Там ещё и какой-то va_end для очистки памяти. Он п...

Привет, что ты там говорил про обфускатор?

s54820
А это не функция. Это макрос встроенный, он развор...

Кстати, в x86_64 на ассемблере могу без выделения. Самомодифицирующийся код, в котором цикл добавляет индекс регистра к инструкции mov, а затем второй цикл уже по стеку.

КТ315
Когда, где, кто?

Ты рассказывал, что это интересные проект, тогда я его испугался, но сейчас решил попробовать

КТ315
Кстати, в x86_64 на ассемблере могу без выделения....

И тут к тебе приходит форматная строка %d %f %d, и тебе нужно ползти в xmm. Ну и SMC это удар по производительности. И ещё отсутствие реентерабельности.

КТ315
Пробуй.

А как он выглядит

s54820
И тут к тебе приходит форматная строка %d %f %d, и...

С XMM это да... Но можно выкрутиться. А вот про производительность интересно - что лучше - SMC, или выделение памяти и туда данные копировать.

КТ315
С XMM это да... Но можно выкрутиться. А вот про пр...

Там не должно быть выделения памяти, можно ведь массив на стеке. Относительно дорогое только копирование.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта