Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 28.07.2018
Сообщений: 124

Как перевести код с языка Си на PureBasic ?

21.08.2023, 17:48. Показов 3755. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте ! Есть небольшой код на Си:
C
1
2
3
4
5
6
7
8
int main()
{
   register unsigned count = 0;
   register unsigned summa = 0;
   for(count = 0; count < 4000000000; count = count + 1)
       summa = summa + 1;
   return 0;
}
Особенность его в том, что он молниеносно совершает 4000000000 раз инкременацию переменной (примерно за 17 миллисекунд). При этом PureBasic циклом 'For' делает это в тысячи раз дольше. Пример:

PureBasic
1
2
3
4
5
time = ElapsedMilliseconds()
For i = 0 To 400000000
  a + 1
Next
Debug ElapsedMilliseconds() - time
При этом, нужно заметить, что во втором случае цикл в 10 раз короче. И время исполнения составило 44483 миллисекунд.

Так вот, можно ли переложить код СИ на PureBasic, или сделать Си-вставку ? Если можно, то каким образом ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.08.2023, 17:48
Ответы с готовыми решениями:

Перевести код с языка с на с++
Помогите перевести на с++. буду благодарен #include &lt;dos.h&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; using namespace std; ...

Перевести код с языка С на С#
Доброе утро! Помогите, пожалуйста, есть такая задача. Функция должна в строке, передаваемой ей в качестве параметра, заменяет каждый...

Перевести код с языка Си в С++
#include &lt;stdio.h&gt; double path(double v, double a, double t) { return v*t + a*t*t/2; } void print(double p1,...

38
Эксперт по электронике
7233 / 3412 / 347
Регистрация: 28.10.2011
Сообщений: 13,410
Записей в блоге: 7
28.09.2023, 10:20
Студворк — интернет-сервис помощи студентам
Это статический массив. Его размер нельзя изменить после создания.

Цитата Сообщение от nigri_lupus Посмотреть сообщение
но вроде бы, в С строка это массив символов
Т. к. массив статический - строка фиксированной длины.
0
3 / 3 / 0
Регистрация: 14.12.2020
Сообщений: 171
28.09.2023, 16:02
Цитата Сообщение от locm Посмотреть сообщение
Т. к. массив статический - строка фиксированной длины.
Но перенести статический массив из кода С в код PB можно?
0
Эксперт по электронике
7233 / 3412 / 347
Регистрация: 28.10.2011
Сообщений: 13,410
Записей в блоге: 7
28.09.2023, 16:05
Выделите память в коде PB и скопируйте в нее данные из Си кода.
1
3 / 3 / 0
Регистрация: 14.12.2020
Сообщений: 171
28.09.2023, 18:05
locm, Спасибо Большое!
Правда, вероятно это не последний вопрос по данной теме....
Небольшой оф-том.... вчера экспериментировал с Си вставками.
Написал 2 цикла в одном коде, причем, фактически один к одному.... один цикл работает - другой ошибку выдает... наверное, час мучался - ошибку искал. Оказалось, компилятор Си чувствителен к регистру, а я толи For с заглавной буквы написал, толи имя переменной. Исправил "большую" букву на "маленькую" - код заработал....
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
28.09.2023, 18:53
Цитата Сообщение от nigri_lupus Посмотреть сообщение
наверное, час мучался - ошибку искал
Не понял.
На первой же компиляции должна выскочить ошибка с необъявленной переменной.
У вас программа час компилируется, что ли.
0
Эксперт по электронике
7233 / 3412 / 347
Регистрация: 28.10.2011
Сообщений: 13,410
Записей в блоге: 7
28.09.2023, 23:48
Замабувараев, у компиля gcc расплывчатое описание ошибки.
Оно такое если во вставке случайно написать For вместо for.
Code
1
2
3
4
5
6
7
8
9
10
11
error: expected ')' before ';' token
 
  353 | For(count = 0; count < 4000000000; count = count + 1)
 
      |    ~         ^
 
      |              )
 
purebasic.c:353:54: error: expected ';' before 'summa'
 
  353 | For(count = 0; count < 4000000000; count = count
0
3 / 3 / 0
Регистрация: 14.12.2020
Сообщений: 171
29.09.2023, 00:09
locm, вот именно с \тим я час и мучался
0
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 7
04.12.2023, 16:02
locm,
Здравствуй, Уважаемый.
Пожалуйста, поделись версией РВ с pbcompilerc.exe.
Вроде перерыл там куда ты указал, пункт "Оптимизация кода" присутствует, но _C Backend отсутствует.
Буду очень признателен.

Добавлено через 14 минут
Разобрался.
Отзываю свою просьбу.
0
Эксперт по электронике
7233 / 3412 / 347
Регистрация: 28.10.2011
Сообщений: 13,410
Записей в блоге: 7
04.12.2023, 16:50
Цитата Сообщение от ugulamjanov Посмотреть сообщение
поделись версией РВ с pbcompilerc.exe
Компилятор появился в 6.00.
По умолчанию нужно добавлять в настройках.
На рутрекере есть портабельная сборка 6.02 если не ошибаюсь где все настроено.
0
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 7
04.12.2023, 17:03
Спасибо. Разобрался в настройках IDE. С версией 5.70 работает исправно.
0
12 / 12 / 0
Регистрация: 02.07.2014
Сообщений: 124
04.12.2023, 20:53
Когда говорят, что в Си нет строк, то подразумевается, что нет механизма динамического управления памятью под них.
О выделении памяти и корректности адресов нужно заботиться самому.
0
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 7
07.12.2023, 10:29
locm,
а где инструкция (правила, список команд и т.д.) по применению вставок от С?
0
63 / 61 / 3
Регистрация: 06.11.2010
Сообщений: 186
Записей в блоге: 1
07.12.2023, 12:08
Цитата Сообщение от ugulamjanov Посмотреть сообщение
а где инструкция
Компилятор позволяет сохранить код в Си, то что перед отправкой СИ компилятору. Этот код позволяет понять какие приставки используются для переменных, функций, массивов и т.д. Я выкладывал сборку AkelPad, где по F8 можно вызвать меню с пунктом получить код в Си или в Asm. Тут
0
Эксперт по электронике
7233 / 3412 / 347
Регистрация: 28.10.2011
Сообщений: 13,410
Записей в блоге: 7
07.12.2023, 12:29
Официальной инструкции пока нет.
Список команд можно найти в учебниках по Си.
0
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 7
14.12.2023, 10:07
Я имел в виду руководство для совместного использования переменных, ссылок, адресов и т.д.
0
12 / 12 / 0
Регистрация: 02.07.2014
Сообщений: 124
14.12.2023, 12:24
; Точно работает
; Variables: v_ local Or g_ Global
; Pointers: p_ local Or gp_ Global
; Functions: f_
; Structures: s_
; Structure Fields: f_
; =================================
; Не проверял и пока не понимаю как использовать
; Arrays: a_
; Lists: t_
; Maps: m_
; Modules: modulenameX
; =================================
; Пытался проверять, но кажется не работает.
; Labels: il_
1
1748 / 353 / 41
Регистрация: 15.10.2012
Сообщений: 550
16.12.2023, 15:19
Цитата Сообщение от useful Посмотреть сообщение
; Functions: f_
Уточнение
f_ функция, только для c-backend.
l_ метка
ll_ метка в процедуре
p. дополнительный префикс для параметров и локальных переменных процедуры (возможно, только asm-backend).
1
12 / 12 / 0
Регистрация: 02.07.2014
Сообщений: 124
16.12.2023, 15:47
действительно
; Labels: l_
работает

где я прочитал про il(ил) для метки не помню, но это и не верно, потому не важно.
p.s. и пишу исключительно о Си бакэнде естественно
0
Эксперт по электронике
7233 / 3412 / 347
Регистрация: 28.10.2011
Сообщений: 13,410
Записей в блоге: 7
16.12.2023, 17:26
Цитата Сообщение от useful Посмотреть сообщение
где я прочитал про il(ил) для метки не помню, но это и не верно, потому не важно.
Такие метки есть.
PureBasic
1
2
3
While x=10
  x+1
Wend
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int WinMain(void *instance, void *prevInstance, void *cmdLine, int cmdShow) {
PB_Instance = f_getmodulehandle_(0);
PB_MemoryBase = f_heapcreate_(0,4096,0);
SYS_InitPureBasic();
// While x=10
while (1) {
if (!((v_x==10LL))) { break; }
// x+1
v_x=(v_x+1);
// Wend
}
il_wend1:;    // <-- метка начинающаяся с il
SYS_Quit();
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.12.2023, 17:26

Перевести код с языка С++ в С
Нужно перевести код с языка С++ на язык СИ #include&lt;iostream&gt; using namespace std; int main() { string str = &quot;here is a...

Нужно перевести код с языка С на С++
Факторизация Назовём n-факторизацией числа m его представление в виде произведения ровно n множителей m = a · a · ... · a. Найти число...

Перевести код из языка Pascal в C++
Помогите пожалуйста перевести код программы из языка Pascal в C++. А то у меня не совсем нормально получается. program pas; const ...

Перевести код с языка С на матлаб
#include &lt;stdio.h&gt; #define INT_MIN -2147483647 #define INT_MAX 2147483647 int main() { int a = {{ 1,2,3,4,5 }, { 2, 3, 4,...

Перевести код из языка С++ в язык C#
Здравствуйте,помогите пожалуйста перевести мой код из С++ на С# Вот условие самой задачи: Структура &quot;Студент&quot;: - фамилия,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru