kirill70674 5 25 октября, 2023 Опубликовано 25 октября, 2023 · Жалоба Здравствуйте, коллеги Пытаюсь удостовериться в правильности ответа данного поста: https://stackoverflow.com/questions/17327680/what-is-the-difference-between-single-and-double-ampersand-binary-opera А именно: в случае если операнд оператора && (логическое И) является вектором, то этот операнд сначала сравнивается с 0 (нулём), и результат этого сравнения уже идёт на вход &&. Как ни шерстил стандарт - ничего подобного не нашёл. Теоретически можно сравнивать вектор с нулём, или приводить его к одному биту. Т.е. возможны два подхода, и они по разному работают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 26 октября, 2023 Опубликовано 26 октября, 2023 · Жалоба При логических операциях целые неявно приводятся к булевому типу и потом выполняется операция. Та же логика действует в обычном: int x = ...; ... if(x) begin ... end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexRayne 7 26 октября, 2023 Опубликовано 26 октября, 2023 · Жалоба 12 часов назад, kirill70674 сказал: если операнд оператора && (логическое И) является вектором что значит "вектором"? Вы говорите о указателе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 26 октября, 2023 Опубликовано 26 октября, 2023 · Жалоба 13 hours ago, kirill70674 said: Пытаюсь удостовериться в правильности ответа данного поста: https://stackoverflow.com/questions/17327680/what-is-the-difference-between-single-and-double-ampersand-binary-opera да простейший код скидать и покрутить module pipa_popa ; int pipa; int popa; initial begin popa = 4; pipa = 2; // if (popa) begin $display("popa if pass"); end if (pipa) begin $display("pipa if pass"); end // if (popa & pipa) begin $display("pipa & popa if pass"); end if (popa && pipa) begin $display("pipa && popa if pass"); end $stop; end endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kirill70674 5 29 октября, 2023 Опубликовано 29 октября, 2023 · Жалоба В 26.10.2023 в 10:55, AlexRayne сказал: что значит "вектором"? Вы говорите о указателе? Какие указатели в SystemVerilog? Вектор - синтезируемый тип в SV. В 26.10.2023 в 05:44, dxp сказал: При логических операциях целые неявно приводятся к булевому типу и потом выполняется операция. Та же логика действует в обычном: int x = ...; ... if(x) begin ... end А где это написано? В стандарте есть запись: "числа не равные нулю интерпретируются как логическая единица". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 30 октября, 2023 Опубликовано 30 октября, 2023 · Жалоба 12 часов назад, kirill70674 сказал: Вектор - синтезируемый тип в SV Вектор -- синтезируемый тип в V. В SV это называется пакованный массив (packed array). (если уж наводить строгость). 12 часов назад, kirill70674 сказал: А где это написано? В стандарте есть запись: "числа не равные нулю интерпретируются как логическая единица". Ну, отдельного встроенного булевого типа в V/SV нет, имелось в виду, что автоматически приводится к однобитному значению, пригодному для анализа на true/false. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться