Няшная / Говнокод #19036 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
#include "memory.h"
#include "core.h"
#include "start.h"

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Halo Virtual Machine version 0.01\n");
    initCore(&proc, ram);
    run(&proc);
    return 0;
}

Главное - пафосное название

Запостил: kgm-rj kgm-rj, (Updated )

Комментарии (86) RSS

  • Файл датируется апрелем 2011. Я тогда виртуальными машинами болел
    Ответить
      • Не, я тогда в Преторианцев рубился. Мне просто нравилось название "галактическое гало"
        Ответить
    • В чём "говно"? Пока я вижу говно только в твоём пафосе.
      Ответить
      • Это потому что не заком с программировапнием эвм
        Ответить
        • И действительно,.. я ведь только на будильнике с часовым механизмом программирую...
          Ответить
          • Я вообще не увереничто ты знаешь что такое программировпние.
            Ответить
            • Да откуда тебе быть уверенным, если ты даже запятую поставить не можешь..
              Ответить
              • Тебе просто нечего ответить на мои резонные замечания, вот ты и психуешь.
                Ответить
                • Разумеется мне нечего ответить, ведь ты ни о чём не спросил.
                  P.S.: А ты долго думал. Наверное занят был...
                  Ответить
        • Да ну. Очень много контор, в которых camelCase в идентификаторах юзается. Ну и Qt, до кучи.
          Ответить
            • Получается, что всё, что написано не в стиле std и boost - является говнокодом?
              Ответить
                • Глупая какая-то у вас обоих логика.
                  Для примера, llvm и clang написаны в подобном стиле. Так что же, llvm и clang - говно, а его разработчики - говнокодеры? Нет конечно.
                  Каждый пишет в удобном ему стиле, главное не отходить от него в пределах одного проекта.
                  Кто вбил в ваши головы такие принципы?
                  Ответить
                  • Шланг и ллвм это эппл, эппл это геи, геи это говно
                    Ответить
                    • А можно конкретней?
                      У меня в голове не укладывается даже фраза "геи это говно", не говоря уже об остальном.
                      Ответить
                      • Запишем мысль guest'а в виде силлогизма:

                        Геи ебутся в жопу.
                        В жопе говно.
                        ---
                        Следовательно - геи говно.
                        Ответить
                        • Похоже на то... Но тогда зачем вообще интересоваться программированием с таким мышлением?
                          Ответить
                          • А как установка "геи говно" мешает интересоваться программированию?

                            В какой конторе ты работаешь?
                            Ответить
                            • > как установка "геи говно" мешает интересоваться программированию
                              Нетолерантно же. Во всякие гуглы не возьмут.
                              Ответить
                              • И многие посетите нашего сайта работают в гугл?

                                Меня максимум в детстве родители ставили в гугл
                                Ответить
                                • Если станешь пидором геем - больше шанс, что возьмут в гугл.
                                  Ответить
                                    • По его словам пидар не он, а пи. Значит в гугле работает Пи! Травля-дианон.
                                      Ответить
                                        • Если русский не думает о хуях и очке - он думает о пидоре.
                                          Ответить
                                          • Блджад, выглядит так, что на сайте только один русский - 3_14dar.
                                            Ответить
                                            • Русских тут гораздо больше, как минимум курточка и кегдан.
                                              Ответить
                                  • это из разряда "двое геев были не готовы к тому, что на собеседование придет лезбиянская пара с инвалидкой и черным младенцем"
                                    Ответить
  • если proc это глобальная переменная, определенная в другом модуле, то почему маленькими букавками?
    Ответить
      • большими, конечно же. Иначе как их отличать от локальных?

        Такой большой, машину виртуальную делаешь, а таких простых вещей не знаешь. Стыдно!
        Ответить
        • > большими, конечно же.
          КАПСОМ_ПИШУТ_МАКРОСЫ, МАКРОСЫ_ПИШУТ_КАПСОМ. Для глобалок, имхо, надо всё-таки какой-нибудь другой конвеншн, например gProc. Но мысль верная, глобалки должны отличаться от остальных переменных.
          Ответить
          • Во-первых макросы не всегда пишут капсом. Иногда макросы делают вид что они функции, и тогда они пишутся не капсом. И даже в комментарии пишут "эта функция может быть макросом, берегите руки".

            Во-вторых хоть какой-то стиль нужен, потому что у меня первая мысль "это не скомпилится, нету переменной proc и ram".
            Ответить
            • > Во-вторых хоть какой-то стиль нужен
              Ну я разве спорю? "Но мысль верная, глобалки должны отличаться от остальных переменных."

              > макросы не всегда пишут капсом
              > иногда макросы делают вид что они функции
              И это очень плохо, и должно быть очень, очень, очень редкой и исключительной ситуацией, особенно в крестах... И так уже всяких errno и assert'ов понаплодили без капса, не надо ещё добавлять... Потому что это не "берегите руки, когда вызываете этот макрос", а "берегите жопу, если случайно объявите что-то с таким же именем".
              Ответить
              • настраиваешь разную подсветку для дефайнов и функций и живешь припеваючи.
                Ответить
              • stdin и stdout по стандарту обязаны быть макросами. Нахера - не вполне понятно.
                Ответить
                • [boris@dev ~]$ grep stdin /usr/include/stdio.h
                  extern struct _IO_FILE *stdin;		/* Standard input stream.  */
                  #define stdin stdin

                  Принцип наименьшего удивления
                  Ответить
            • "Во-первых макросы не всегда пишут капсом."
              А во-вторых, глобальные переменные не всегда пишут не "маленькими букавками".
              Ответить
  • Я столько говна нарыл у себя на диске. Даже примеры ассемблера. Судя по названию, некоторые предназначались для этой машины.

    class Boot implements Task {
    	void Main() {
    		ldstr "Halo System: Boot"
    		irq bios.PRINT
    		newtask
    	}
    }
    Ответить
  • И даже такое

    ; Boot sector
    
    import bios
    import halo
    
    define {
    	struct Task {
    		dword _options
    		pointer _startAddress
    		pointer _endAddress
    	}
    	struct SystemTaskTable {
    		pointer _start
    		pointer _end
    	}
    	macro storStart(to, from) {
    		pa &from    ; Push Address
    		pa &to      ; Push Address
    		sa          ; Store Address
    	}
    	macro storEnd(to, from) {
    		pa &&from   ; Push Address
    		pa &to      ; Push Address
    		sa          ; Store Address
    	}
    }
    
    main() {
        ldstr &_message
    	pushb bios.puts
    	int bios.request
    	pa &oldTaskTable
    	stt             ; Save Task Table
    	storStart(me._startAddress, myTask)
    	storEnd(me._endAddress, myTask)
    	pushd 0
    	ord halo.iopl.full
    	pa &me._options
    	stord
    	storStart(myTableDescriptor._start, me)
    	storEnd(myTableDescriptor._end, me)
    	pa &myTableDescriptor
    	ltt             ; Load Task Table
    	lt 0            ; Load Task
    	rs              ; ReStart
    	loop $
    }
    
    myTask() {
    	ret
    }
    
    data {
    	char [] _message = "Trying to change processor mode.\n\0"
    	struct SystemTaskTable oldTaskTable
    	struct SystemTaskTable myTableDescriptor
    	struct Task me
    }
    Ответить
    • Прикольно, так это какая-то самодельная виртуальная машина со своим байткодом?
      Ответить
      • Задумывалась. Недоделал. Хотя, простенькие машинные коды выполняла

        #ifndef START_H_INCLUDED
        #define START_H_INCLUDED
        
        #include "commands.h"
        
        void load() {
            int i;
            ram[0] = HC_BLOAD;
            ram[1] = 0x00;
            ram[2] = 0x00;
            ram[3] = 0x01;
            ram[4] = 0x00;
            ram[5] = HC_HALT;
            for (i = 0; i < 256; i++) {
                commands[i] = hcUnknown;
            }
            commands[HC_BLOAD] = hcBload;
            commands[HC_HALT] = hcHalt;
        }
        
        #endif // START_H_INCLUDED
        Ответить
        • У меня их несколько, этих виртуальных машин, было в разное время. Разной степени доделанности.
          Ответить
          • Прикольно, а меня, в своё время, только на эмулятор 8080 хватило... Очень хотелось шахматы запустить из журнала "моделист-конструктор", вот и замутил эмулятор-дебаггер-асм-дизасм для 8080, а потом несколько часов вбивал хексы из журнала. Там такое говнокодище было на досовском борланд паскале... В асме и дизасме кейсы на 500 строк, а в самом эмуляторе примерно столько же голого асма...

            http://govnokod.ru/10011
            Ответить
            • шо вы какие-то говёные архитектуры себе выбираете

              лучше MMIX запилите
              Ответить
              • > какие-то говёные архитектуры
                Legacy же. Я всё детство мечтал на чём-нибудь запустить эти проги из журнала... Вот где-то классе в 11, когда доступ к ПеКа появился, и нахуярил этот эмулятор.
                Ответить
            • Я тоже подумывал о таком. У меня остались страницы от МК с парой игр в машинных кодах.
              Ответить
              • Ну там не совсем честный эмулятор получился. Железо вообще не эмулировалось, только cpu. А морда к шахматам была на паскале и писала/читала ходы в виртуальную оперативку.
                Ответить
                • не знаю как в ваших 8080, но вообще обычный 8086 без обвязки эмулировать бессмысленно

                  нужен bios, нужен таймер, нужен контроллер клавиатуры, и иначе как на нем игрушки запускать?
                  Ответить
                  • > не знаю как в ваших 8080
                    Да 8080 это ж вообще восьмибитная лампота... Какие операционки, там BIOS'а то толком не было...

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

                    > без обвязки эмулировать бессмысленно
                    Ну да, весь остальной софт на этом эмуляторе не пойдёт ;(
                    Ответить
                    • да я знаю про 8080, из него же Z80 вырос вроде. Но ведь и спекки имел не только проц, но и видео как-то пиздецки программируемое например.

                      Кстати! Я не знаю архитектуру z80, но говорят что она крайне проста. вот её может и имело бы смысл написать, и получить сразу миллион суперских игр
                      Ответить
                      • > может и имело бы смысл написать
                        Дык всяко уже есть эмуляторы.

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

                        > крайне проста
                        Проще, наверное, только 6502, который у NES был.
                        Ответить
                        • Кстати, о таймингах. Ты помнишь, что модуль Crt нашего любимого Борманд Паскаля падает с ошибкой 200 при попытке запуска на процессорах с частотой выше 300 мегагерц? А ведь его назначение вовсе не игрушечное...

                          Фиксилось, кстати, заменой WORD'а на DWORD в функции расчёта задержек.
                          Ответить
                          • Я вот помню. Некоторые игрушки у меня из за этого не шли.

                            А еще я помню как лодранер у меня заканчивался за секунду на 166м.
                            А еще гоблииины первые спрашивали какой у меня проц: 386 или 486 и показывали анимацию с такой вот скоростью
                            Ответить
                          • Ну я тогда толком не разбирался с этой проблемой, т.к. очень быстро нашёлся пропатченный crt, который не падал.
                            Ответить
                          • Была такая проблема. Division by zero 🙂 Если быстро надо было вылечить, то nop'али этот зловещий div.
                            Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8