1. Си / Говнокод #10616

    +123

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    __flash unsigned char strings[] =
    {
      20,     '*','*','Р','е','ж','и','м',' ','О','т','ч','ё','т','о','в',' ','Ф','Р','*','*',
      20,     'П','р','о','м','.',':','1',' ','С','м','е','н','.',':','2',' ','Ф','O',':','3',
      20,     ' ','З','а','к','р','ы','т','ь',' ','с','м','е','н','у',' ','Ф','Р','?',' ',' ',
      20,     ' ','П','е','ч','а','т','а','т','ь',' ','X','-','О','т','ч','ё','т','?',' ',' ',
      20,     '*','Р','е','ж','и','м',' ','К','о','р','р','е','к','ц','и','и',' ','Ф','Р','*',
      20,     'В','Н','Е','С',':','1',' ','В','Ы','П','Л',':','2',' ','К','О','Р','Р',':','3',
      20,     '*','К','Ф','Р','*',' ','О','п','е','р','.','В','н','е','с','е','н','и','е',' ',
      20,     '*','К','Ф','Р','*',' ','О','п','е','р','.',' ','В','ы','п','л','а','т','а',' ',
      20,     '*','К','Ф','Р','*',' ','К','о','р','р','е','к','т','-','й',' ','ч','е','к',' ',
      20,     '*','Р','е','ж','и','м',' ','П','р','о','г','р','а','м','-','я',' ','Ф','Р','*',
      20,     'В','Р','Е','М','Я',':','1',' ','П','Р','Л',':','2',' ','Т','И','П',':','3',' ',
      20,     '*','П','Ф','Р','*',' ',' ','Д','а','т','а','-','В','р','е','м','я',' ',' ',' ',
      12,     'Т','И','П',' ','Т','О','П','Л','И','В','А','?',
      4,      'д','о','з','а',
      5,      'C','У','М','М','А',
      5,      'C','Д','А','Ч','А',
      4,      'р','у','б','.',
      9,      'О','Ш','И','Б','К','А',' ','Ф','Р',
      9,      'П','О','Л','Н','.',' ','Б','А','К',
      7,      'П','а','р','о','л','ь',':',
      20,     ' ',' ','П','е','ч','а','т','ь',' ','X','-','О','т','ч','ё','т','а',' ',' ',' ',
      20,     ' ',' ','З','а','к','р','ы','т','и','е',' ','с','м','е','н','ы',' ','Ф','Р',' ',
      20,     '*','Р','е','ж','и','м',' ','П','р','о','г','.',' ','П','а','р','а','м','.','*',
      4,      'Т','Р','К',':',
      3,      'Р','К',':',
      5,      '*','П','П','*',' ',
      20,     '*','И','Н','Ф','*',' ',' ','Ц','Е','Н','А',' ','З','А',' ','Л','И','Т','Р',' ',
      20,     ' ','Г','р','а','н','и','т','-','2','м','к',' ','V','e','r',' ','1','.','1',' ',
      20,     ' ',' ','П','о','д','ч','и','н','ё','н','н','ы','й',' ','р','е','ж','и','м',' ',
      20,     ' ',' ',' ','А','к','т','и','в','н','ы','й',' ','р','е','ж','и','м',' ',' ',' ',
      20,     ' ','Ф','а','т','а','л','ь','н','а','я',' ','о','ш','и','б','к','а','!','!','!',
      20,     '*','C','у','м','м','а','р','н','ы','е',' ','с','ч','ё','т','ч','и','к','и','*',
      20,     'C','М','Е','Н','Н','Ы','Е',':','1',' ','Ф','И','С','К','А','Л','-','Е',':','2',
      20,     '*','C','М','.','С','Ч','*',' ','Т','Р','К',':',' ',' ',' ',' ',' ',' ',' ',' ',
      20,     'С','б','р','о','с','и','т','ь',' ','С','м','е','н','.','С','Ч','.','?',' ',' ',
      6,      'Н','Л','.','С','Ч','=',
      6,      'Ф','С','.','С','Ч','=',
      20,     ' ',' ',' ','П','е','ч','а','т','ь',' ','ч','е','к','а',' ',' ',' ',' ',' ',' ',
      20,     '*','П','Ф','Р','*',' ','П','а','р','о','л','ь',' ','К','а','с','с','и','р','а',
      20,     '*','П','Ф','Р','*',' ','Т','и','п',' ','Ф','Р',' ',' ',' ',' ',' ',' ',' ',' ',
      20,     ' ','В','ы','к','л','ю','ч','е','н','и','е',' ','п','и','т','а','н','и','я',' ',
      20,     'Н','Л',':','1',' ','Б','Н',':','2',' ','П','Р',':','3',' ',' ',' ',' ',' ',' ',//'C','Б',':','4',' ',
      20,     ' ','П','о','т','е','р','я',' ','с','в','я','з','и',' ','с',' ','Т','Р','К',' ',
      20,     ' ','О','ш','и','б','к','а',' ','Ф','Р',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
      20,     ' ',' ',' ',' ','П','е','р','е','з','а','п','у','с','к','!','!','!',' ',' ',' ',
      20,     ' ','З','а','п','р','о','с',' ','с','о','с','т','о','я','н','и','я',' ','Ф','Р',
      20,     ' ','У','с','т','а','н','о','в','к','а',' ','в','р','е','м','е','н','и',' ',' ',
      20,     '*','C','М','.','С','Ч','*',' ',' ',' ','С','М','Е','Н','Н','Ы','Е',' ',' ',' ',
      20,     '*','О','Ф','Р','*',' ','Ф','И','С','К','.',' ','О','Т','Ч','Ё','Т','Ы',' ',' ',
      20,     '№',' ','С','М','Е','Н',':','1',' ','П','О',' ','Д','А','Т','А','М',':','2',' ',
      20,     '*','Р','О','Ф','Р','*',' ',' ','Ф','О',' ','П','О',' ','Д','А','Т','А','М',' ',
      20,     'c',' ',' ','-',' ',' ','-',' ',' ',' ','п','о',' ',' ','-',' ',' ','-',' ',' ',
      20,     '*','О','Ф','Р','*',' ',' ','Ф','О',' ','П','О',' ','С','М','Е','Н','А','М',' ',
      20,     '*','О','б','щ','а','я',' ','к','о','н','ф','и','г','у','р','а','ц','и','я','*',
      20,     'У','с','т','-','к','и',':','1',' ','З','а','м','е','н','а',' ','П','O',':','2',
      20,     'П','р','о','и','з','в','е','с','т','и',' ','з','а','м','е','н','у',' ','П','О',
      20,     '*','К','о','н','ф','*',' ',' ','П','а','р','а','м','е','т','р',':',' ',' ',' ',
      20,     'П','а','р','о','л','ь',' ','о','п','е','р','-','р','а',':',' ',' ',' ',' ',' ',
      20,     'П','а','р','о','л','ь',' ','а','д','м','и','н','.',':',' ',' ',' ',' ',' ',' ',
      20,     'М','и','н','.',' ','д','о','з','а',':',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
      20,     'Т','е','х','н','о','л','о','г','и','ч','.',' ','о','т','п','у','с','к',':',' ',
      11,     'О','Ш','И','Б','К','А',' ','Т','Р','К',':',
      20,     ' ','В','В','Е','Д','И','Т','Е',' ','С','Е','К','Ц','И','Ю',':',' ',' ',' ',' ',
      8,      'В','о','з','в','р','а','т',':',
      8,      'п','е','ч','а','т','а','т','ь',
      11,     'н','е',' ','п','е','ч','а','т','а','т','ь',
      10,     'c','п','р','а','ш','и','в','а','т','ь',
      20,     'В','о','з','в','р','а','т','?',' ','Д','а',':','1',' ','О','т','м',':','3',' ',
      10,     'C','б','о','р','к','а',' ','о','т',' ',
      11,     'З','а','г','р','у','з','к','а',' ','П','О',
      9,      'Н','е','т',' ','с','в','я','з','и',
      10,     'Н','е','т',' ','б','у','м','а','г','и',
      7,      '2','4',' ','ч','а','с','а',
      11,     'Н','е','п','р','.',' ','р','е','ж','и','м',
      11,     'П','О','В',':','1',' ','О','Т','М',':','3',
      16,     'Н','е','в','е','р','н','ы','й',' ','т','и','п',' ','Т','Р','К',
      11,     'C','к','и','д','к','а',' ','№',' ',':',' ',

    Всё, к сожалению, не влезло - 117 строк!

    Запостил: boolivar, 07 Июня 2012

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

    • показать все, что скрытоИди на хуй, пидормотина тупорылая.
      Ответить
    • Что такое __flash?
      Ответить
      • Это код для микроконтроллера, у него гарвардская архитектура, ключевое слово __flash укаызывает компилятору разместить данные во флеш памяти (памяти команд).
        Ответить
        • > разместить данные ... в ... памяти команд
          Ололо так это байткод виртуальной 1ASS машины для микроконтроллеров чтож ты сразу не сказал
          Ответить
      • Походу указание компилятору, чтобы массив размещал на флешке а не в RAM.

        UPD: опоздал :(
        Ответить
    • А как кстати выбирается нужная строка из этого массива? Циклом в котором пропускаются все строки до искомой? Или же есть второй индексный массив?
      Ответить
      • Всё оч просто! :)
        #define   REPORT_MODE_FR_OFFSET             0
        #define   REPORT_FR_TYPE_OFFSET             21
        #define   PRINT_Z_REPORT_OFFSET             42
        #define   PRINT_X_REPORT_OFFSET             63
        #define   CORRECT_MODE_FR_OFFSET            84
        #define   CORRECT_TYPE_FR_OFFSET            105
        #define   CORRECT_INSERT_OFFSET             126
        #define   CORRECT_PAYOUT_OFFSET             147
        #define   CORRECT_RECEIPT_OFFSET            168
        ...

        И в этом весь сок, прикинем что нам придется сделать чтобы вставить/выкинуть одну букву из строки...
        Ответить
        • какой объем памяти в железке? ром и рам
          но вообще
          static const char mode_fr[] = "**Режим отчетов ФР**";
          static const char close_session[] = " Закрыть смену ФР?  ";
          //...
          и так должно заставить компилятор упаковать всё это барахло достаточно компактно (даже не факт, что он вообще будет по слову выравнивать эти записи) в сегмент .data - я конечно не знаю нюансов этой вот гарвардской архитектуры, типа __flash и проч, поэтому может этот подход не катит?

          edit: а, типа __flash это сегмент .code?
          что, если перед вышеописанными строками вставить __flash?
          Ответить
          • Да, так и надо было сделать. Вы не волнуйтесь, этот говнокод уже отрефакторен :) Но чтобы это сделать мне пришлось писать скрипт на пайтоне, не вручную же мне все 117 строк править, плюс столько же индексов, вот как это выглядит сейчас:
            __flash char report_mode_fr_offset[] = "**Режим отчётов ФР**";
            __flash char report_fr_type_offset[] = "Пром.:1 Смен.:2 ФO:3";
            __flash char print_z_report_offset[] = " Закрыть смену ФР?";
            __flash char print_x_report_offset[] = " Печатать X-Отчёт?";

            Ну, а по поводу памяти - это ATmega128 - 128K ROM и 4K RAM
            Ответить
    • показать все, что скрытоКакой же неудобный язык Си! В Паскале такие строки описываются встроенным типом.
      Ответить
    • >'д','о','з','а',
      yes, please
      Ответить
    • показать все, что скрытоВъебал первому наху минус, остальным - по плюсу ;-)
      Ответить

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