Войти
ПрограммированиеФорумОбщее

Кроссплатформенный ассемблер (2 стр)

Страницы: 1 2 3 4 5 Следующая »
#15
(Правка: 15:57) 15:47, 13 июня 2019

Смысл как раз есть. Реализации операторов с/с++ под новый камень на паскале напишешь? Ничего, что сначала придётся реализовать его? К тому же он ещё и тормозов добавит. Или системный загрузчик. Или внутренности системной поддержки многопточности и многозадачности? Кстати, на языке ассемблера, даже на спектрумовском, простейшие подзадачи вроде копирования видеопамяти во внеэкранный буфер решаются проще, чем на c/c++, паскале и даже бейсике. Беда языков ассемблера в том, что на них сложность быстрей всех не эзотерических растёт с размером. Но для внутренностей перегруженных операторов длинной арифметики встроенный в gcc язык ассемблера как бы вообще не вне конкуренции. А займ/перенос на c/c++ – натуральное издевательство над программистом.


#16
16:02, 13 июня 2019

https://flatassembler.net/download.php

#17
16:37, 13 июня 2019

Тарас-Прогер
Меня плюсы полностью устраивают, со временем постараюсь отойти от STL, попробую Boost, а как язык они мне очень нравятся.
Не вижу смысла сравнивать языки между собой, так как идеального варианта нет, по крайней мере код на плюсах хорошо оптимизируется.

#18
(Правка: 17:12) 17:10, 13 июня 2019

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

#19
(Правка: 23:04) 22:59, 13 июня 2019

Тарас-Прогер
> А если кросплатформенности, то тебе нужен не ассемблер и даже не паскаль, а
> язык высокого уровня. Например, си
вот уж не знаю плакать или радоваться, что Паскаль стал ниже уровнем, чем Си.

+ Показать
#20
(Правка: 23:16) 23:14, 13 июня 2019

skalogryz
> Паскаль, по-умолчанию, высокоуровненее, чем Си,
а как отмерять этот уровень — равный ему или немножко выше
от ноля уровня воды поверхности планеты. или как.
?

#21
(Правка: 23:27) 23:25, 13 июня 2019

>и без сборщика мусора
Давно встроен. С XE2 примерно если речь о Delphi.
Память полностью освобождается, даже если ты забыл сделать Free.

>потому что в нём идёт хороший такой RTL
Какой такой RTL? VCL? Никто не заставляет. Я VCL не использую.

Не говорили бы коль не знаете.
Delphi как и FPC мощные и гибкие системы.
Последний вообще кросплатформенный, да еще и бесплатный.

#22
(Правка: 23:38) 23:32, 13 июня 2019

Rikk
> а как отмерять этот уровень — равный ему или немножко выше
> от ноля уровня воды поверхности планеты. или как.
по количеству кода, который от тебя прячет язык, по отношению к созданному машинному коду (ну или ассемблеру)
например в паскале можно так:

var
  s1, s2: string;
  s : string;
begin
  s1 := ...
  s2 :=  ...
  s := s1 + s2;
а в Си, как такое сделать? и почему именно так, а не иначе?
(а если ещё сделать поправку на то, что string это не просто shortstring, ака массив на 256 символов. а AnsiString, с динамикой и рефкаунтингом)

eDmk
> Какой такой RTL?
unit System.
например.
ты его тоже не используешь?

тест прост:

begin
  writeln('hello world');
end.
смотрим итоговый размер исполняемого файла, и думаем, чем занято место. (причём очень интересно меряться этим размером между разными версиями компилятора)
сам по себе writeln() чего стоит!

#23
23:40, 13 июня 2019

skalogryz
> по количеству кода, который от тебя прячет язык, по отношению к самому
> машинному коду (ну или ассемблеру)
1 какое количество кода , который от меня прячет язык паскаль?
в байтах. пять байтов.или десять байтов.или сколько там байтов.

2  какое количество кода , который от меня прячет язык си?
в байтах.пять байтов.или десять байтов.или сколько там байтов.

3 какое количество кода , который от меня прячет язык паскаль по отношению к самому машинному коду(ну или ассемблеру)?
паскаль—машинный код(ну или ассемблер) отношение.
  в байтах.пять байтов.или десять байтов.или сколько там байтов.

4 какое количество кода , который от меня прячет язык си по отношению к самому машинному коду(ну или ассемблеру)?
си—машинный код(ну или ассемблер) отношение.
  в байтах.пять байтов.или десять байтов.или сколько там байтов.

#24
(Правка: 14 июня 2019, 0:01) 23:48, 13 июня 2019

Rikk
> какое количество кода , который от меня прячет язык ...?
в штуках байт не скажу. зависит от кода языка высокого уровня и настроек компилятора.
Хотя отношение найти, я думаю можно:

Берём конечный размер .exe файла и делим его размер ВСЕХ исходников.
(т.е. исходик и твоей программы, и исходники все сопуствующих библиотек).

Вот и получится хорошее такое отношение.

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

На моём примере со строками.

 s:=s1+s2;
с точки зрения языка, это арфимитическое выражение сложения.
Но паскаль умеет "складывать" строки.
На деле это получается, чем-то вроде:
  len1 := length(s1);
  len2 := length(s2);
  lenfinal := len1 + len2;
  s := allocatestring(lenfinal)
  Move(s1[1], s[1], len1);
  Move(s2[1], s[len1+1], len2);
(не забываем ставить проверки на пустоту строк)

причём в языке Си, скорее всего всё это пришлось бы либо писать тебе самому.

в (условный) ассемблер вышестоящий код переписывать не буду. :D

Пример с writeln

  writeln('hello world ', i+j);
"под капотом" выглядит как-то так
  OpenHandle(stdout);
  WriteHandle_ConstStr(stdout, 'hello world ');
  ts := allocatestring();
  ti := i+j;
  convert_int_to_str(ts, ti);
  WriteHandle_DynStr(stdout, ts);
  deallocatestring(ts);
  FlushHandle(stdout);
но итоговому программисту об этом думать не нужно. Потому что язык с компилятором.

А в Си такого нет; Там будь добр подключи нужный (из тысячи) хедер, и вызови нужную (из тысячи) функции.
(зато подобного можно добится в Крестах... и да, это отдельная дисциплина :D)

#25
(Правка: 0:07) 0:04, 14 июня 2019

skalogryz
> Вот и получится хорошее такое отношение.
какое
skalogryz
> причём в языке Си, скорее всего всё это пришлось бы либо писать тебе самому.
в отличие от не пришлось бы либо писать не самому?

#26
0:06, 14 июня 2019

Rikk
> какое
написал же: "хорошее"

#27
0:07, 14 июня 2019

Rikk
> в отличие от писать не самому?
именно так.
чем больше язык берёт на себя, тем он выше.
ускоряет разработку, но уменьшает контроль

#28
0:09, 14 июня 2019

skalogryz
> написал же: "хорошее"
ну вы же знаете что отношение имеет известную точность
например 10/5=2
skalogryz
> Берём конечный размер .exe файла и делим его размер ВСЕХ исходников.
exe(в байтах)/его размер ВСЕХ исходников=N
N=? цифра
какое отношение.число.цифра.

#29
0:13, 14 июня 2019

>смотрим итоговый размер исполняемого файла, и думаем, чем занято место.
191 Кб на Delphi XE6. Че не так?

Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеФорумОбщее