Anonymous
Новичкам вообще AVR лучше советовать, STM32 толстые, они то всю память память даже не будут использовать. И на ассемблере там не попишешь. А вот на AVR спокойно можно прошивки на ассемблере клепать, причём довольно приятный набор инструкций у них, и инструменты есть AVRAsm+AVRdude. Но тут конечно нечто похожее с заданиями для новичков, которые обсуждались ранее — принуждают вычисления делать на этапе исполнения, вместо использования препроцессора. А тут заставляют (или сами хотят) на микроконтроллерах писать, вместо пары транзисторов, резисторов, конденсаторов и др. деталей.
disba1ancer
Всё компилируется.
А ты попробуй только с нормальными сями или вообще плюсовым компилем
disba1ancer
Не в любой момент, а в любой релиз новой сборки Windows
Придирки, это и так должно быть очевидно, но в своей оси я бы и такой троллинг устроил
Anonymous
🤨Что?
disba1ancer
Во втором примере вообще ассемблерный код
Я про это и асм идущий следом: int a = &b; — ссылка.
Anonymous
Я про это и асм идущий следом: int a = &b; — ссылка.
Компилируется, но с предупреждением. С чего бы ему не компилироваться? Адрес это не число?
Anonymous
И в данном случае это всё код для примера, чтобы было понятно. В чём смысл ваших сообщений?
Leon
Детекторный радиоприемник?
Anonymous
А ты указал хотя бы c11?
Зачем мне в коде для примера, чтобы показать новичку, что такое ссылка, компилировать его с С11?
Anonymous
Чтобы не учить плохому
Идите в чат по С, вы ошиблись чатом.
­
Чтобы не учить плохому
Что бы не учить плохому надо учить C99
disba1ancer
Здесь система типов должна дать по рукам, да и пример стреляет
disba1ancer
Что бы не учить плохому надо учить C99
Это старьё надо только для легаси
Anonymous
Здесь система типов должна дать по рукам, да и пример стреляет
Ничего не стреляет, и в данном случае должно скомпилироваться: mov dword[b], a А ещё лучше: b: dd a Что я и показал выше, меня не волнует, на что там компилятор жалуется, мне вообще на него всё равно, я использовал синтаксис С, ибо он более понятный новичкам, которые ещё не вошли в ассемблер.
Anonymous
На 64ёх битах стреляет ещё как
Причём тут вообще 64, если выше демонстрировалось всё на x86?
Anonymous
Кстати, на 64 тоже ничего не стреляет. #include <stdio.h> int main() { int a = 0; int b = &a; printf("%X\n", b); return 0; } » file 1 1: ELF 64-bit LSB pie executable » ./1 4D4AB80 GCC 1.2.0
Anonymous
Только одно предупреждение. Но адрес тоже число, так что проблем никаких нет...
s54820
😁
s54820
Так у тебя адрес может быть обрезан
Не может быть, а обрезан.
Anonymous
Да, ошибся. На 64 ломается.
disba1ancer
Не может быть, а обрезан.
Если в старшей половине нули то нет, и то не факт, gcc для преобразований чисел в указатели декларирует знаковое расширение
Anonymous
Сишники захватили чат 😂
disba1ancer
Да, ошибся. На 64 ломается.
Если хочешь нормально, делай так: uintptr_t a = (uintptr_t)&b;
Anonymous
Ну всё, сейчас будут весь час этот несчастный код для примера обсуждать, весь MISRA же обсосут
Anonymous
Если хочешь нормально, делай так: uintptr_t a = (uintptr_t)&b;
Ну да, так красивее. В следующий раз новичку такое напишу
s54820
А где ссылка?
А нету в Си ссылок.
Egor
А нету в Си ссылок.
В этом и вопрос..
Egor
&b
Я вижу здесь только оператор взятия адреса объекта b Вы где-то видите здесь тип "reference"?
Anonymous
😄😄
Anonymous
Я вижу здесь только оператор взятия адреса объекта b Вы где-то видите здесь тип "reference"?
Что-ж, раз b это воистину обьект, тогда дополню свой ответ: int a = &b; Это ссылка, поскольку ссылка — переменная, указывающая на обьект (понятие С++, ООП)
s54820
Что-ж, раз b это воистину обьект, тогда дополню свой ответ: int a = &b; Это ссылка, поскольку ссылка — переменная, указывающая на обьект (понятие С++, ООП)
Ссылка была бы, если бы ты a = 1, и у тебя b изменился. А такое в Си можно сделать только с глобальными переменными с ld-скриптом.
Anonymous
> ссылка — переменная, указывающая на обьект Это называется указатель.
Указатель это переменная, указывающая на адрес обьекта. ЯВУшники придумали)) В гугле же беру...
Egor
Вы сейчас дали определение типу T**. Хотя все равно не то.
Anonymous
Вы сейчас дали определение типу T**. Хотя все равно не то.
Что же такое указатель, и что же такое ссылка? Вот это да! Какие странные вещи. Обсудим в чате по С++ (😂😂)
Aiwan \ (•◡•) / _bot
мне вот после этой картинки все ясно-понятно более-менее стало с пониманием этих мгогочисленных звездочек
Aiwan \ (•◡•) / _bot
мне вот после этой картинки все ясно-понятно более-менее стало с пониманием этих мгогочисленных звездочек
человечки - это указатели, показывающие пальцем на чтото, типа "вооон там". и вот "там" - это адрес. это как послать нах**. в данной алегории ты являешься указателем, а вот куда ты посылаешь - "объектом указателя". ну как тебе еще объяснить? ты хоть маякни что понял, а то я дальше продолжу объяснять
Aiwan \ (•◡•) / _bot
вот как это в сишке выглядит
Aiwan \ (•◡•) / _bot
пример чуть посложней
Aiwan \ (•◡•) / _bot
докатился (-лись)
Hello, World! 🎄
вот как это в сишке выглядит
А нафига указатели?
Hello, World! 🎄
Я помню только для открытия файла использовал и указывал на fopen или что-то там
Egor
А нафига указатели?
Чтобы мутировать переменную в функции, в которой она не была создана. Чтобы не копировать большие по размеру структуры, когда это не нужно. Чтобы можно было динамически выделять память (*alloc функции возвращают void*).
Egor
😂😂
А зачем ссылки в С? :)
Anonymous
А зачем ссылки в С? :)
Откуда мне знать, какие ещё извращения придумают ЯВУшники?
Egor
Откуда мне знать, какие ещё извращения придумают ЯВУшники?
Не волнуйтесь, я примерно такой ответ и ожидал.
Anonymous
Писец на воротник! До сих пор про "ссылки" и "указатели" толкуетеXD
Anonymous
Пугаете новобранцев)
Anonymous
Пугаете новобранцев)
Это ЯВУшники пугают. Хорошо, что человек давно ушел книгу читать, и не читал всего этого бреда. Он то С с трудом понимает, а тут ему топ-MISRA кодеры примеры пишут на uint_ptr с кастом и поясняют за C11 🤦‍♂️🤦‍♂️
Erik
Ребят, а тут есть люди, которые сидят в дискорде? Было бы интересно например засесть вместе в каком-нибудь голосовом чате, устроить дискуссии, обмен опытом и т.д. Вообще, что думаете насчет такого?
Eugene
телега тоже так может, но так никто не делает, значит необходимость в таких посиделках отсутствует
Может, и делают, есть же голосовые чаты в группах. Другой вопрос, будет ли интересно опытному товарищу с новичком?
Ruslan
какие еще варианты?) или критика?) без джампов (представьте что их не изобрели) MOV EAX,0xFFFFFFFF CMP EAX,0xFFFFFFFF LAHF SHL AH,1 SHR AH,7 XOR EBX,EBX MOV BL,AH кто не понял - получить ZF в регистр общего назначения зачем? просто интересно
Eugene
setz al :)
Ruslan
добавлю еще эту страницу http://www.club155.ru/x86cmd/CMOVcc а то гуглится не сразу
Ruslan
да, это то что нужно
Ruslan
http://www.club155.ru/x86cmd/SETcc
Евгений
Привет Коллеги! оффтоп есть вопрос на 4л пива (переведу на карту от души) Не переустанавливая Windows 10, решить ошибку с драйвером (код 10) интернет просмотрел где допер рекомендации сделал) и даже в реестре, не заработало( напишите в личку кто помочь может
Ruslan
существует ли cmovz который умеет устанавливать значения в память, а не только в регистр? Т.е. cmovz [kek],eax