LINUX.ORG.RU

Качество кода компилятора

 


0

2

Добрый день. Я не являюсь экспертом в области computer science и к тому же, в разработке компиляторов. Знаю, что у intel процессора можно провести анализ и поделить на группы то или иное действие, чтобы составить грамотный код. Сначала я анализировал опкоды, всё сравнивал, нашел некоторую логику, но как бы не хотелось, в других опкодах [в построении опкодов] я логику не наблюдал, и решил сделать простым монотонным способом, то-есть объявить каждый опкод процессора.

Выглядит это не сложно, и поэтому кажется, что не очень круто. Как вы думаете, стоит ли провести нормальный анализ и поделить на составные части, ведь к примеру, опкоды, которые имеют у себя в начале 0x80-0x83 опкоды имеют под собой логичную трактовку и можно сделать парсер для реверс инжиниринга, но дальнейшие опкоды я так и не понял.

В итоге, я тупо добавляю все опкоды в простую структуру, файл чьей предоставлю в конце сообщения.

Я прикупил несколько нетбуков asus eee pc 700 и одну хорошую батарею. На этих нетбуках был windows xp. На одном оставит xp, а на другом поставил openbsd, но места оказалось мало, даже без иксов и игр, так как требуется поставить туда компилятор, а он весит много.

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

Вот код как выглядит составление ассемблерных опкодов.

#include <stdio.h>
#include <stdint.h>

enum {
	AAA,
	AAD,
	AAM,
	AAS,
	ADC,
	ADD,
	AND
};

#define MAX_BYTES_IN_OPCODE_PREFIX              4

#define REQUIRED_NO                             0
#define REQUIRED_VAL                            1

enum {
	RM8_R8,
	RM16_R16,
	R8_RM8,
	R16_RM16,
	AL_IMM8,
	AX_IMM16,
	RM8_IMM8,
	RM16_IMM16,
	RM16_IMM8,
	VALUE_NO_TYPE
};


#define MAY_NO                                  0
#define MAY_16_32_BITS                          1

#define REQUIRED_NO_SECOND_REG                  0
#define REQUIRED_SECOND_REG                     1

struct opcode_definition {
	uint32_t val;
	const char *str_val;
	uint32_t is_required_val;
	void (*build_bytes) (struct opcode_definition *def);
	uint8_t prefix_bytes[4];
	uint32_t prefix_size;
	uint32_t value_type;
	uint32_t total_operator;
	uint32_t may_32;
	uint32_t need_second_reg;
	uint8_t second_reg[1];
};

#define BYTE_BUILDER1(b0) \
{b0}

#define BYTE_BUILDER2(b0, b1) \
{b0, b1}

#define BYTE_BUILDER3(b0, b1, b2) \
{b0, b1, b2}

#define BYTE_BUILDER4(b0, b1, b2, b3) \
{b0, b1, b2, b3}

#define DEFINE_OPCODE_ARRAY() \
	static struct opcode_definition opcodes[] = {

#define DEFINE_OPCODE_ARRAY_END() \
	};

#define ADD_OPCODE(value, required_val, func_byte_builder, sprefix_size, svalue_type, smay_16_32, is_need_second_reg, sub_reg, sbytes) \
{.val = value, .str_val = #value, .is_required_val = required_val, .build_bytes = func_byte_builder, \
	.prefix_size = sprefix_size, .value_type = svalue_type, \
	.prefix_bytes = sbytes, .may_32 = smay_16_32, .second_reg = sub_reg, .need_second_reg = is_need_second_reg},

DEFINE_OPCODE_ARRAY()
	ADD_OPCODE(AAA, REQUIRED_NO, NULL, 1, VALUE_NO_TYPE, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x37))

	ADD_OPCODE(AAD, REQUIRED_NO, NULL, 2, VALUE_NO_TYPE, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER2(0xd5, 0x0a))

	ADD_OPCODE(AAM, REQUIRED_NO, NULL, 2, VALUE_NO_TYPE, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER2(0xd4, 0x0a))

	ADD_OPCODE(AAS, REQUIRED_NO, NULL, 1, VALUE_NO_TYPE, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x3f))

	ADD_OPCODE(ADC, REQUIRED_VAL, NULL, 1, RM8_R8, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x10))
	ADD_OPCODE(ADC, REQUIRED_VAL, NULL, 1, RM16_R16, MAY_16_32_BITS, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x11))
	ADD_OPCODE(ADC, REQUIRED_VAL, NULL, 1, R8_RM8, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x12))
	ADD_OPCODE(ADC, REQUIRED_VAL, NULL, 1, R16_RM16, MAY_16_32_BITS, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x13))
	ADD_OPCODE(ADC, REQUIRED_VAL, NULL, 1, AL_IMM8, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x14))
	ADD_OPCODE(ADC, REQUIRED_VAL, NULL, 1, AX_IMM16, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x15))
	ADD_OPCODE(ADC, REQUIRED_VAL, NULL, 1, RM8_IMM8, MAY_NO, REQUIRED_SECOND_REG, BYTE_BUILDER1(0x02), BYTE_BUILDER1(0x80))
	ADD_OPCODE(ADC, REQUIRED_VAL, NULL, 1, RM16_IMM16, MAY_16_32_BITS, REQUIRED_SECOND_REG, BYTE_BUILDER1(0x02), BYTE_BUILDER1(0x81))
	ADD_OPCODE(ADC, REQUIRED_VAL, NULL, 1, RM16_IMM8, MAY_16_32_BITS, REQUIRED_SECOND_REG, BYTE_BUILDER1(0x02), BYTE_BUILDER1(0x82))

	ADD_OPCODE(ADD, REQUIRED_VAL, NULL, 1, RM8_R8, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x00))
	ADD_OPCODE(ADD, REQUIRED_VAL, NULL, 1, RM16_R16, MAY_16_32_BITS, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x01))
	ADD_OPCODE(ADD, REQUIRED_VAL, NULL, 1, R8_RM8, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x02))
	ADD_OPCODE(ADD, REQUIRED_VAL, NULL, 1, R16_RM16, MAY_16_32_BITS, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x03))
	ADD_OPCODE(ADD, REQUIRED_VAL, NULL, 1, AL_IMM8, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x04))
	ADD_OPCODE(ADD, REQUIRED_VAL, NULL, 1, AX_IMM16, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x05))
	ADD_OPCODE(ADD, REQUIRED_VAL, NULL, 1, RM8_IMM8, MAY_NO, REQUIRED_SECOND_REG, BYTE_BUILDER1(0x00), BYTE_BUILDER1(0x80))
	ADD_OPCODE(ADD, REQUIRED_VAL, NULL, 1, RM16_IMM16, MAY_16_32_BITS, REQUIRED_SECOND_REG, BYTE_BUILDER1(0x00), BYTE_BUILDER1(0x81))
	ADD_OPCODE(ADD, REQUIRED_VAL, NULL, 1, RM16_IMM8, MAY_16_32_BITS, REQUIRED_SECOND_REG, BYTE_BUILDER1(0x00), BYTE_BUILDER1(0x83))

	ADD_OPCODE(AND, REQUIRED_VAL, NULL, 1, RM8_R8, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x20))
	ADD_OPCODE(AND, REQUIRED_VAL, NULL, 1, RM16_R16, MAY_16_32_BITS, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x21))
	ADD_OPCODE(AND, REQUIRED_VAL, NULL, 1, R8_RM8, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x22))
	ADD_OPCODE(AND, REQUIRED_VAL, NULL, 1, R16_RM16, MAY_16_32_BITS, REQUIRED_SECOND_REG, 0, BYTE_BUILDER1(0x23))
	ADD_OPCODE(AND, REQUIRED_VAL, NULL, 1, AL_IMM8, MAY_NO, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x24))
	ADD_OPCODE(AND, REQUIRED_VAL, NULL, 1, AX_IMM16, MAY_16_32_BITS, REQUIRED_NO_SECOND_REG, 0, BYTE_BUILDER1(0x25))
	ADD_OPCODE(AND, REQUIRED_VAL, NULL, 1, RM8_IMM8, MAY_NO, REQUIRED_SECOND_REG, BYTE_BUILDER1(0x04), BYTE_BUILDER1(0x80))
	ADD_OPCODE(AND, REQUIRED_VAL, NULL, 1, RM16_IMM16, MAY_16_32_BITS, REQUIRED_SECOND_REG, BYTE_BUILDER1(0x04), BYTE_BUILDER1(0x81))
	ADD_OPCODE(AND, REQUIRED_VAL, NULL, 1, RM16_IMM8, MAY_16_32_BITS, REQUIRED_SECOND_REG, BYTE_BUILDER1(0x04), BYTE_BUILDER1(0x83))
DEFINE_OPCODE_ARRAY_END()
Ответ на: комментарий от vmx1

Мне кажется, тебе будет интересна вот эта статья

Посмотрел, что-то из этого знаю, это всё собрано из документации, которая у меня и так есть.

peeruoeso
() автор топика

Выглядит это не сложно, и поэтому кажется, что не очень круто

С такими прогонами тебе на винфак

buddhist ★★★★★
()
Ответ на: комментарий от peeruoeso

Вот этого дядьку погляди на досуге, кажется близкая тематика

Кишки компиляторов, железа и почему всё работает так как работает. Не эфимерные речи «делай вот так и всё будет хорошо», а «что, зачем и почему, и теперь сделай это сам, но на свой вкус»

Как минимум тематически интересно, как максимум можно почерпнуть как информацию, так и ход мыслей, что порой важнее чем просто информация.

Хотя есть спорные моменты, например искреннее желание оного господина переписать линукс на плюсы и типа плюсы это вообще типа топ. Но, если закрыть глаза на эти вопиющие и неприемлемые выражения =), то остальное тематическое, вполне годно.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от firkax

Мне нравиться ваш ответ. Да, ModRM я реализовал в своем байткодовом компиляторе. Этот способ выглядит удобным.

Я ещё читал, что у процессора есть два регистра, один регистр данных, другой регист адреса, вроде так. Это так захватывает! Очень хочу уже бы поскорее взяться за разработку электроники или какой-нибудь логической схемы.

Я например здесь пытался сделать логические вентили на транзисторах, прежде, чем читать это в книге по схемотехнике компьютера. Мой вариант получился громоздким, и как в последствии я узнал, можно было обойтись более лаконичным набором транзисторов. Но как же мне нравилось искать правильный вариант. На это я потратил где-то два дня. Первые два дня было сложно сделать какой-то компонент, а когда удалось, то остальные решались уже легче. Электроника просто потрясает. Ещё бы в Turing Complete всю игру пройти, и было бы вообще счастье.

peeruoeso
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Спасибо. Но у меня нет VPN и не хочу им пользоваться. Если когда-нибудь, хоть и не жду этого, откроют доступ к youtube, то посмотрю, благо эта тема обсуждений сохраниться на долгие годы.

peeruoeso
() автор топика
Ответ на: комментарий от peeruoeso

Думаю, что я не осилю такую математику, ну и сайт не открывается.

Скорее всего нужен VPN, но не суть. Это сайт с паззлами в сети биткоин. Математика там не сложнее того что вы с компилятором делаете.

Я пока читаю за 10 класс алгебру, и то не всегда. Хочу освоить то, что забыл, когда учился в вечерней школе.

Я тоже регулярно перечитываю некоторые разделы тк со временем забывается то что не используется. Это как раз таки нормально.

Obezyan
()
Ответ на: комментарий от peeruoeso

У меня тоже нет VPN, он и не нужен, но это ладно

  • Константин Владимиров

Например (кто-то перелазил часть лекций)

* [1] Открытая архитектура RISC V Константин Владимиров @
  tilir Syntacore
  https://rutube.ru/video/c86deec3b925b35f2c5b2768ce44aae8/  [00:30:23]
* [2] Компиляторный выпуск Оптимизирующие компиляторы. Ст
  руктура и алгоритмы RISC-V
  https://rutube.ru/video/b7ffed776dd81a19f7b1c1796bb5e275/  [02:02:23]
* [3] Базовый курс C++ (MIPT, ILab). Lecture 1. Scent of 
  C++.
  https://rutube.ru/video/fdf7802b6a9d8b79cc43c05efbdb0863/  [01:21:32]
* [4] Константин Владимиров — Память как концепция в гете
  рогенных системах
  https://rutube.ru/video/4bf1dd256a58ae9ae1a8daff442524bd/  [01:01:27]
* [5] Оптимизирующие компиляторы (МФТИ, 2024). Лекция 1. 
  Тулчейны.
  https://rutube.ru/video/3702d41e19ad5fd3b653820b530023dd/  [01:04:49]
* [6] Клеточные автоматы (рождественская лекция, 2024-25 
  года)
 https://rutube.ru/video/f89fa9c9fc11a3cd4c66aa387e767f41/  [01:04:49]

И так далее

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Obezyan

но он просто дурачится

Мне кажется что нет, у него всерьёз неспособность нормально связывать слова в предложения и даже буквы в слова.

firkax ★★★★★
()
Ответ на: комментарий от peeruoeso

А как тогда сделать?

Да нет, все в принципе правильно, парсер текста в эти opcode_definition и далее их них в бинарник

shimshimshim
()
Ответ на: комментарий от Shushundr

Вызывающе неверное утверждение.

Да, тут я сделал ошибку. Например по части электронной продукции C как раз востребован, куда я и хочу податься. А вот, если искать работу не в embedded, то я почти не наблюдаю вакансий, а те что есть, для меня сложны, так как требуют либо работать с теми технологиями, которые мне не интересны, либо требуют нужного режима, который я никак не могу соблюдать.

peeruoeso
() автор топика
Ответ на: комментарий от Obezyan

У вашей сети неверно обрабатывается EOS token, рекомендую начать с него

Верный признак генератора-стойкое ощущение отсутствия собеседника на той стороне, при каком угодно корректном и грамотном тексте.

slew
()
Ответ на: комментарий от slew

Да, я это хорошо понимаю, как и то как это исправить, но все же склонен верить ему. Пусть лучше я обманусь и человек на самом деле будет здоров, чем это окажется правдой, а я не принял его всерьёз.

Obezyan
()
Ответ на: комментарий от firkax

у него всерьёз неспособность нормально связывать слова в предложения и даже буквы в слова

Он и думает таким образом

goingUp ★★★★★
()
Ответ на: комментарий от Obezyan

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

А поля Галуа, да, забористая тема, подтверждаю, как человек, писавший декодер для кода Рида-Соломона с нестандартными параметрами.

hobbit ★★★★★
()
Ответ на: комментарий от firkax

Хотя у меня подозрение что ты вообще тролль.

Либо шизофреник. У меня знакомый был с шизой, так вот у него бред был похожего типа. А сейчас ещё и весна, обострения.

Loki13 ★★★★★
()
Ответ на: комментарий от Loki13

Либо шизофреник. У меня знакомый был с шизой, так вот у него бред был похожего типа. А сейчас ещё и весна, обострения.

А это проблема? Может я пообщаться хочу и узнать опыт более сильных коллег? Подскажите пожалуйста, где я бред написал?

peeruoeso
() автор топика
Ответ на: комментарий от peeruoeso

Мысль скачет от абзаца к абзацу в топике. Поиск логики, там, где её искать не нужно. Это показательно, поэтому и отметил. А так, нет, не проблема.

Loki13 ★★★★★
()
Ответ на: комментарий от Loki13

Поиск логики, там, где её искать не нужно.

Для вас может это очевидно, что искать логику не нужно. Вы посмотрите хотя бы на одно приложение для реверса. У них там всё так закручено, что сложно разобраться что и как. Они явно проводили какой-то анализ, хотя уже подсказали, что есть несколько групп, которые совпадают, но я также видел и другие группы, например те, которые начинаются на 0x0f, там команды схожи по функционалу. Я думаю, что логика есть, так как мне уже известны 4 или 5 групп, которые можно использовать в парсинге. Главное видеть по опкодам (если не знаешь назначение инструкций) к какой группе относятся.

Это то же самое, как применять близкие команды по их числам. Например, если бы я мог осилить большой объем схемы, то мог бы создать калькулятор, где например биты 0x10 были бы к плюсу отнесены, а биты 0x20 к минусу. И всё это относится к какой-то группе, чтобы отделить ALU от другой части микросхемы.

Если интересно, я сделал что-то типа калькулятора Link где можно только прибавлять числа. Если бы мне побольше сил иметь, то я бы сделал более мощную схему, но думаю, что такое решают с помощью VHDL или других средств, чем просто расставлять и тратить время на построение схемы.

Если мысль скачет от абзаца к абзацу, то это значит, что я говорю искренне, и пишу всё что вспоминаю по пути. Такое кстати описано в книге «Психотехнологии НЛП для расследования преступлений», книга очень занятная. Так вот. Я думаю, что написал всё что хотел. Возможно для вас это кажется сумбурным, но я, перечитав, вижу, что я удовлетворил свою жажду выписать всё в тему сайта, так как то, что меня волнует, я описал. Да и то, что вам возможно нужно знать, чтобы не было других вопросом, например, зачем я пишу компилятор для i386. Тут сразу и ответ, что потому что я хочу сделать ось на asus eee pc 700. Также я делил на абзацы, чтобы было комфортней читать, так как некоторым людям трудно читать большие тексты, не отделяя их на абзацы.

peeruoeso
() автор топика
Последнее исправление: peeruoeso (всего исправлений: 1)
Ответ на: комментарий от peeruoeso

потому что я хочу сделать ось на asus eee pc 700

хочешь - делай. только зачем тебе какой-то ассемблер, если оси (в основном) пишут на си, чтобы не забивать себе голову асмом. и это делают здоровые люди, с работающей логикой. и бери с них пример.

опять же при твоем диагнозе затруднены логические построения, а it это сфера, где логические построения - основа основ и со сломанной логикой там делать нечего.

ты говоришь у тебя асус с 2 гигами памяти? а я помню компы с 1 мегабайтом памяти, и оно работало, и компиляторы туда лезли. оно имело в 2000 раз меньше памяти и работало!

то есть твой анализ проблемы (мало памяти, буду свою ос и компилятор писать) - глубоко неверен. памяти для реальной работы у тебя дох..я. да, для современных свистоперделок ее не хватает. а для реальной работы - полно.

alysnix ★★★
()

Ты пытаешься найти закономерности там, где их нет. Если это доставляет удовольствие — зашибись. Но смотри, осторожнее с этим. А то так недолго и найти, а там уже и до лиц на Марсе, преследования числами, чтения славянских рун на Солнце и жёстких конспирологических теорий недалеко — оно как раз вот с этого и начинается всё, и хуже всего, когда «закономерность» таки удаётся найти. Ведь мозг у нас такой, если хорошо искать, то всегда что-нибудь найдётся, или подгонится.

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

В идеале не ограничиваться лишь википедией — там и ссылки есть. Но тут как пойдёт.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)

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

У автора топика ситуация непростая, но она же и является плюсом - мысль может течь самобытно и выдавать нестандартные решения.

vsnb
()
Ответ на: комментарий от alysnix

С радостью отвечу тебе на эти вопросы.

хочешь - делай. только зачем тебе какой-то ассемблер, если оси (в основном) пишут на си, чтобы не забивать себе голову асмом. и это делают здоровые люди, с работающей логикой.

Ассемблер не главным будет язык. Я уже разрабатываю концепт языка, который показывает моё мировозрение, какой я хочу язык, чтобы писать на нём, он конечно же будет высокоуровневым. Если писать ось на C, то компилятор gcc со всеми его зависимостями придется адаптировать под новую ось и получить ещё одна unix-подобная система. Я же хочу отделиться от gcc и сделать свой компилятор, чтобы в новой системе не нужно было заморачиваться с приспосабливанием gcc к моей ОС. Так как, хоть я и люблю на C писать, но всё же думаю сделать нечто своё, чтобы гордиться своим детищем и тем, что на нём написано.

опять же при твоем диагнозе затруднены логические построения, а it это сфера, где логические построения - основа основ и со сломанной логикой там делать нечего.

Тем не менее ИТ сфера помогает мне мыслить и ты упускаешь тот момент, что я так могу развиваться. Неужели, мне теперь бросить ИТ и заняться более простой работой, чтобы мозг вообще перестал думать как логически что-то строить? Я думаю нет, лучше работать и дальше в ИТ.

ты говоришь у тебя асус с 2 гигами памяти? а я помню компы с 1 мегабайтом памяти, и оно работало, и компиляторы туда лезли. оно имело в 2000 раз меньше памяти и работало!

2 гига ssd, я же так написал. В наших реалиях, современные оси имеют после установки, например openbsd всего 1100 мб. Остается 800 мб для софта. Если поставить git egcc и make, то это отожрет уже где-то 800 мб. Поэтому это накладно. Да, в прошлом было меньше памяти, но и софта было меньше. То что вы приводите в пример, наверное DOS система, где софта почти не было. Ну и написано было на асме, а когда пишешь на асме, то многие секции просто отпадают, в отличии от языков высокого уровня. Сколько написал, столько и скомпилируется. Плюс это были скорее всего однозадачный системы и память, не считая монитора (ось), отводилась под одну программу.

то есть твой анализ проблемы (мало памяти, буду свою ос и компилятор писать) - глубоко неверен. памяти для реальной работы у тебя дох..я. да, для современных свистоперделок ее не хватает. а для реальной работы - полно.

Не очень понял вопрос. Для какой реальной работы может хватить памяти? Что мне делать на нетбуке, если на нем кроме базового софта ничего больше нет. Какую вы в этом видите реальную работу?

Не знаю насчет логики, ещё раз уточню, да, мне сложновато мыслить порой, но я думаю, что лучше развивать голову такими думками. Вот, что я сейчас пытаюсь разработать, это самый сложный проект в моей жизни. На видео я запустил мой эмулятор NES в 3d пространстве на своем движке SDL3 + Opengl4. Сам эмулятор выводит изображение в текстуру и поэтому его можно использовать как просто эмулятор или как экран телевизора в своей игре. Пока нормально работает Марио, который можно увидеть на видео и плоховато работает Bomberman. В Bomberman не взрываются стены, и я очень долго уже вожусь с этой проблемой и не могу её решить. Но мне нравиться искать этот баг, такое впечатление, будто я пытаюсь найти иголку в стоге сена.

peeruoeso
() автор топика
Ответ на: комментарий от peeruoeso

Если писать ось на C, то компилятор gcc со всеми его зависимостями придется адаптировать под новую ось и получить ещё одна unix-подобная система.

причем тут gcc? си компиляторов полно. под досом не было си компиляторов что-ли? си компиляторы работали на машинах с 64к памяти, вне всяких юниксов.

alysnix ★★★
()
Ответ на: комментарий от CrX

Но смотри, осторожнее с этим. А то так недолго и найти, а там уже и до лиц на Марсе, преследования числами, чтения славянских рун на Солнце и жёстких конспирологических теорий недалеко — оно как раз вот с этого и начинается всё, и хуже всего, когда «закономерность» таки удаётся найти. Ведь мозг у нас такой, если хорошо искать, то всегда что-нибудь найдётся, или подгонится.

Да, у меня такое было, когда я не лечился и не знал, что я болен. Мышление просто подрывалось той информацией, которую я читал в интернете. Но читая книги, я более менее пришел в строй. Например, я начал читать философию, там Эпиктет высмеивает оракулов, что мол, люди, так бояться всего, что по каждому поводу идут к оракулам. Он их считал шарлатаннами. Однако в истории Геродота, приводит рассказы от жрецов и прочих людей, который упоминали как каждый царь, чтобы пойти войной на другую страну, спрашивал об этом у оракула. Если оракул говорил, что война закончиться победой, то шли войной. И ведь это была такая жизнь и никто и тем более царя не мог высмеять за то, что он обращается к оракулу. В наше время, кто-то может потешаться над тем, что имеют знания, что гадалки и экстрасенсы, просто играют роль психологов и обманывают людей, когда как для этих людей реальность совсем другая. Вот смотри. Если я тебе скажу, что в будущем у тебя будет два ребенка, одна девочка, другой мальчик. Если ты воспринимаешь меня как оракула, то поверишь, если нет, то это всё равно засядет тебе в голову. И как бы ты не сопротивлялся, тем более хорошему прогнозу на будущее, ты волей не волей будешь каждый раз вспоминать это предсказание, когда будешь общаться с очередной девушкой. Если ты не знаешь выдуманную свою судьбу, то думаешь, что ты сам контролируешь её, однако я привязан к теории фатализма, и уверен, что у всех есть судьба. Если я пишу на этот форум и выслушиваю негатив, значит это такая у меня судьба и не более. Поэтому большое счастье, что я начал развиваться в ИТ и читать книги на разные интересующие тематики, так как это дает большие знания об устройстве мира и я больше понимаю как было раньше, как раньше думали, и что думают сейчас. Без этих знаний я бы был полон тех паразитных мыслей, который мне внушил интернет, после того, как я попал в большую беду. Но хорошо, что всё более менее хорошо закончилось и я получил все лишь болезнь в виде пожизненного бремя.

peeruoeso
() автор топика
Ответ на: комментарий от peeruoeso

2 гига ssd, я же так написал.

у меня дома валяются раритетные 40, 80, 120 мб hdd. а ему 2 гига мало для поделок. во как.

alysnix ★★★
()
Ответ на: комментарий от alysnix

причем тут gcc? си компиляторов полно. под досом не было си компиляторов что-ли? си компиляторы работали на машинах с 64к памяти, вне всяких юниксов.

Были компиляторы. Но зачем ты мне это рассказываешь, если я и так знаю. Я ведь хочу создать что-то своё! Что например ты создаешь, раз так мешаешь мне помышлять о своих разработках? Может у тебя самого времени не хватает на свое творчество? Ты пойми, мне хочется двигаться в этом направлении. Что с того, что в DOS был компилятор, мне что теперь, вместо своей ос поставить DOS на нетбук, и что я там делать буду?

peeruoeso
() автор топика
Ответ на: комментарий от alysnix

у меня дома валяются раритетные 40, 80, 120 мб hdd. а ему 2 гига мало для поделок. во как.

Ну вот так вот. Все люди разные и не стоит мерить всех по себе. Если свою ось буду писать, то места будет много, тогда там можно будет развернуться. Мало места писал потому, что не накатить современную ось и пользоваться комфортно. Если напишу своё, то от этого будет большой плюс.

peeruoeso
() автор топика
Ответ на: комментарий от peeruoeso

Я ведь хочу создать что-то своё!

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

alysnix ★★★
()
Ответ на: комментарий от alysnix

все что ты хочешь, было сделало много лет назад и не раз.

Не вижу проблем, чтобы научиться делать то же самое, что делали такое же. Вы ведь наверное hello world тоже писали в начале своего программирования, но зачем, ведь множество начинающих писали точно такое же? Это абсурдно с вашей стороны упоминать мне, что я не должен развиваться в том направлении, которое изучено в основном только иностранными коллегами. С такими мыслями, мне кажется, вы делаете только те вещи, которых ещё нет в мире, но мне кажется, я сильно сомневаюсь, что вы делаете что-то прорывное. Так вы назовете чем занимаетесь или будете и дальше скрывать?

peeruoeso
() автор топика
Ответ на: комментарий от peeruoeso

Если напишу своё, то от этого будет большой плюс.

«современная ос» это миллион строк минимум. в году 365 дней. даже если писать 1000 строк в день, надо порядка 3 лет безошибочного письма по 1000 строк в день.

но естессно все развалится на этапе в 50 тыщ строк, и станет неработоспособным, даже если работало до этого. то есть пара месяцев сизифового труда (при точном знании предмета) и все развалится.

понятно что никто не может писать по 1000 строк в день без ошибок, ну оптимистично будет - 300 строк. итого 10 лет на ос, если точно знаешь предмет.

это только ос. еще год-два лет на компилятор (если знаешь предмет и язык простой), еще немеряно лет на окружение(зависит от фантазий) и закончит такой человек в дурке, даже если был здоров в самом начале. он просто угробит свою жизнь на собственный бред сверхценных идей.

alysnix ★★★
()
Ответ на: комментарий от alysnix

У меня такое впечатление, будто я пытаюсь успокоить ваше внутреннее состояние, ведь вам так и не терпиться узнать, почему я так или так делаю. То напиши компилятор и вопросы отпадут. Когда показал, что компилятор уже и так есть, появились другие вопросы. Не совсем понимаю что вы ко мне так сильно придераетесь, как будто пытаетесь что-то до меня донести? И вы так ещё начали свой диалог, да кому нужен твой компилятор, будто у вас слабый эмоциональный интеллект и вы не можете спокойно написать, что вас это задевает, и что вы не можете сдержаться и вылить своё недовольство в сообщения. Чтобы вам стало понятно, и успокоить вашу психику, так как здесь на лоре наверное вам её подорвали, я скажу, что хочу сделать свой продукт. Во первых у меня будут экспертные знания, во вторых им будут пользоваться, если он будет интересен, но это другой вопрос. Основная цель получить хорошие знания. Ведь даже kolibri OS используют для разработки, хотя там даже установщика на жесткий диск нет. Зачем спрашивается грузить весь софт в оперативную память, я не знаю, но не стал им мешать, так как им это нравиться. И, если вы уж сравниваете всё по себе, то отвечу, что мне всё равно, нравиться ли кому-то kolibri OS, если есть желающие пописать на асме, то этот проект самое то! У вас же наблюдается такое мировозрение, будто вы себя считаете хозяином жизни и если вы решили, что для вас это бесмысленно, то и другим это глупо заниматься. А я сильно сомневаюсь, так как я ничего не знаю о тебе, что ты умнее меня.

peeruoeso
() автор топика
Ответ на: комментарий от alysnix

Вы не правы. Опять используете НЛП, чтобы я бросил это дело. С тобой я больше не хочу разговаривать, ты не уважаешь чужое желание развиваться и боишься писать код несколько лет. Непонятно зачем ты вообще работаешь, если умрешь по старости и всё накопленное просто потеряешь.

peeruoeso
() автор топика
Ответ на: комментарий от peeruoeso

Если бы вы сначала посоветовались с сообществом, как и в каком направлении вам развивать ваше хобби, было бы горазд меньше вопросов, критики и глумления. Вы придумали какую-то дичь и теперь хотите, чтобы вам кто-то помог в этой дичи разобраться. Вы уж либо сами варитесь в своем безумии, либо прислушивайтесь к советам.

FishHook
()
Ответ на: комментарий от peeruoeso

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

работаю, потому что нравится, потому что деньги нужны и ради детей.

но не потому, что хочу осчастливить человечество или забодать каменную стенку.

alysnix ★★★
()
Ответ на: комментарий от FishHook

Зачем мне спрашивать совета у сообщества? Я сам могу решить в этом плане. Я всего лишь хотел узнать насколько код хорошо. Если вы думаете, что я настолько слаб, что за меня сообщество должно решать, то советую вам начать образовываться, так как плохо разбираетесь в людях.

peeruoeso
() автор топика
Ответ на: комментарий от peeruoeso

Если бы вы сначала посоветовались с сообществом

что за меня сообщество должно решать

ну, коль ты не видишь разницы между «спросить совета у людей с опытом и знаниями» и «не надо за меня решать», видимо, тут и правда клинический случай.

FishHook
()
Ответ на: комментарий от FishHook

Я не собираюсь ничего доказывать идиотам, тем более, если вы не можете прочитать нормально.

Всё, я решил, что не буду заходить на этот форум, так как он полезной состовляющей не несёт никакой. Я без этого форума всегда разбирался во всём, хоть и думал, что здесь будет выстроено нормальное общение. А здесь только нарываются на оскорбления, которые я не могу проявлять в виду своего мышления. Надеюсь, что я с вами в жизни никогда не встречусь, так как вы мне не приятны. Я ощущаю великую боль из-за того, что вы меня упрекаете в том, что я делаю и чем занимаюсь, я не говорю только о тебе, а обо всех, кто писал в этой теме. Что ж, придется немного пострадать, а вы можете радоваться и чувствовать себя крутыми, так как доставили массу проблем психологических душевнобольному. Вами будут гордиться.

peeruoeso
() автор топика

На тех нетбуках должен быть простой процессор

Там 32-битный атом, у меня есть похожий нетбук (тогда их ещё вроде сабноутами называли). В базе там атом на 1.8ггц и 512 метров мозгов плюс хард на 40гб, этого более чем достаточно чтоб поставить туда что-то нормальное и даже с графикой (генту собрать например).

Так как у меня есть желание делать свою ось, чтобы кайфовать от процесса, я решил сначала написать свой компилятор ассемблера

Как ось связана с компилятором? Это вообще разные вещи

Если есть дохлый ноут, нравится асм и хочется пилить ось - помоги колибри, там фана хватит на три жизни

upcFrost ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.