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

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

21.08.2023, 17:48. Показов 3476. Ответов 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
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,024
Записей в блоге: 7
28.09.2023, 10:20
Студворк — интернет-сервис помощи студентам
Это статический массив. Его размер нельзя изменить после создания.

Цитата Сообщение от nigri_lupus Посмотреть сообщение
но вроде бы, в С строка это массив символов
Т. к. массив статический - строка фиксированной длины.
0
3 / 3 / 0
Регистрация: 14.12.2020
Сообщений: 171
28.09.2023, 16:02
Цитата Сообщение от locm Посмотреть сообщение
Т. к. массив статический - строка фиксированной длины.
Но перенести статический массив из кода С в код PB можно?
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,024
Записей в блоге: 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
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,024
Записей в блоге: 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
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,024
Записей в блоге: 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
Сообщений: 115
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
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,024
Записей в блоге: 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
Сообщений: 115
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
Сообщений: 115
16.12.2023, 15:47
действительно
; Labels: l_
работает

где я прочитал про il(ил) для метки не помню, но это и не верно, потому не важно.
p.s. и пишу исключительно о Си бакэнде естественно
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,024
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru