Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Témata - mhi

Stran: [1] 2 3 4
1
Vývoj / C pre-preprocesor
« kdy: 09. 04. 2023, 01:31:27 »
Pisu nejaky disassembler pro ne uplne bezny RISCovy procesor. Potrebuju nejak rozumne v cecku udelat to, abych mohl porovnavat masky instrukci (vyznamove bity jsou ruzne rozesety) a soucasne jsem mohl extrahovat jednotlive bity do promennych.  Tohle se pise hrozne blbe v cistem C, tak jsem zacal psat program, ktery rozepise kazde volani fiktivni fce bitmatch(var,bitmask[,assignments]) tak, aby vratila nonzero kdyz dojde k matchi instrukce a vyextrahovala mi bity do promennych. Takhle zustava kod celkem slusne citelny a je to syntakticky podobne cecku, takze jdou pouzit indentory, syntax highlighting, apod. Zde je priklad:

Kód: [Vybrat]
  if (bitmatch
      (opcode, '01010a100aabab.' /*an opcode */ , rd /*target reg */  =
       b, rs = a))
    {
      printf ("ok");
    }

vystup:
Kód: [Vybrat]
  if (/*.................................................01010a100aabab.*/ ((opcode & 0x7DC0) == 0x2900) && (rd = ((opcode>>1)&0x1)<<0|((opcode>>3)&0x1)<<1,rs = ((opcode>>2)&0x1)<<0|((opcode>>4)&0x3)<<1|((opcode>>9)&0x1)<<3,1))
    {
      printf ("ok");
    }

(neni to jeste dodelane, tohle je fiktivni instrukce, a je pozde a nejsem si jist jestli tam nemam nejakou botu)

Z jineho projektu mam napsany C lexikalni analyzator (tokenizer), ktery jsem na to pouzil, jeho funkce je primitivni, najde dalsi token a naplni strukturu s informacemi o tokenu. Udelal jsem tedy primitivni preprocesor, ktery z meho pseudo-c generuje cecko (lokalizuje identifikator bitmatch a slepe prepise do C kodu):


Kód: [Vybrat]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ctok.h"

void
synterr (struct ctok *tok, const char *whatiswrong)
{
  printf ("Syntax error: %s\n", whatiswrong);
  exit (1);
}

int
main (int argc, char **argv)
{
  struct ctok tok;
  int pos, lastwpos;
  int i, j, k;
  int bs, be, bp;
  char varname[0x100], valname[0x100], bitmask[64];
  unsigned long long bmmask, bmval;


  if (argc != 3)
    {
      printf ("Usage: %s [infile.d.c] [outfile.c]\n", argv[0]); // xxx outfile se ted nepouziva
      exit (1);
    }

  if (ctok_readfile (argv[1]) <= 0)
    {
      perror (argv[1]);
      exit (1);
    }

  fprintf (stdout, "/*Automatically generated by %s, DO NOT EDIT! */\n\n",
           argv[0]);

  lastwpos = pos = 0;
  while (ctok_gettoken (pos, &tok, CTOK_FLAG_IGNORECOMMENTS) > CTOK_EOF)
    {
      // Search for identifier "bitmatch"
      if (tok.toktype == CTOK_IDENT && tok.len == 8
          && !memcmp (tok.data, "bitmatch", tok.len))
        {
          if (lastwpos < pos)
            {
              fwrite (ctok_getdata (lastwpos), pos - lastwpos, 1, stdout);
            }

          if (ctok_gettoken
              (ctok_nexttokpos (&tok), &tok,
               CTOK_FLAG_IGNORECOMMENTS) != CTOK_SYMBOL && tok.info != '(')
            synterr (&tok, "Expected (");

          if (ctok_gettoken
              (ctok_nexttokpos (&tok), &tok,
               CTOK_FLAG_IGNORECOMMENTS) != CTOK_IDENT)
            synterr (&tok, "Expected variable identifier");

          memcpy (varname, tok.data, tok.len);
          varname[tok.len] = 0;

          if (ctok_gettoken
              (ctok_nexttokpos (&tok), &tok,
               CTOK_FLAG_IGNORECOMMENTS) != CTOK_SYMBOL || tok.info != ',')
            synterr (&tok, "Expected \',\' after variable identifier");


          if (ctok_gettoken
              (ctok_nexttokpos (&tok), &tok,
               CTOK_FLAG_IGNORECOMMENTS) != CTOK_CHARLIT)
            synterr (&tok, "Expected bitmask");


          memcpy (bitmask + 64 - tok.len, tok.data, tok.len);

          // ignore spaces in bits, these are just for better readibility
          for (i = 0, j = 0; i < tok.len; i++)
            if (tok.data[i] != ' ')
              bitmask[j++] = tok.data[i];

          memmove (bitmask + 64 - j, bitmask, j);
          memset (bitmask, '.', 64 - j);

          bmval = bmmask = 0;
          for (i = 0; i < 64; i++)
            if (bitmask[63 - i] == '0' || bitmask[63 - i] == '1')
              {
                bmmask |= 1ULL << i;
                if (bitmask[63 - i] == '1')
                  bmval |= 1ULL << i;
              }

          printf ("/*%64.64s*/ ((%s & 0x%llX%s) == 0x%llX%s) && (", bitmask,
                  varname, bmmask, (bmmask >> 32) != 0 ? "ULL" : "", bmval,
                  (bmval >> 32) != 0 ? "ULL" : "");

          while (1)
            {
              if (ctok_gettoken
                  (ctok_nexttokpos (&tok), &tok,
                   CTOK_FLAG_IGNORECOMMENTS) != CTOK_SYMBOL
                  || (tok.info != ')' && tok.info != ','))
                synterr (&tok, "Expected , or )");

              if (tok.info == ')')
                break;

              if (ctok_gettoken
                  (ctok_nexttokpos (&tok), &tok,
                   CTOK_FLAG_IGNORECOMMENTS) != CTOK_IDENT)
                synterr (&tok, "Expected variable identifier");

              memcpy (valname, tok.data, tok.len);
              valname[tok.len] = 0;


              if (ctok_gettoken
                  (ctok_nexttokpos (&tok), &tok,
                   CTOK_FLAG_IGNORECOMMENTS) != CTOK_SYMBOL
                  || tok.info != '=')
                synterr (&tok, "Expected = for bits assignment");

              if (ctok_gettoken
                  (ctok_nexttokpos (&tok), &tok,
                   CTOK_FLAG_IGNORECOMMENTS) != CTOK_IDENT || tok.len != 1)
                synterr (&tok, "Expected bit letter/identifier");

              printf ("%s = ", valname);

              // calculate bit extraction equations
              for (bp = 0, i = 0; i < 64; i++)
                if (bitmask[64 - 1 - i] == tok.data[0])
                  {
                    bs = i;
                    while (i < 64 && bitmask[64 - 1 - i] == tok.data[0])
                      i++;
                    be = i;
                    if (bp != 0)
                      printf ("|");
                    printf ("((%s>>%d)&0x%X)<<%d", varname, bs,
                            (1 << (be - bs)) - 1, bp);
                    bp += be - bs;
                  }
              if (bp == 0)
                {
                  printf ("No matching bits for variable %s\n", valname);
                  exit (1);
                }

              printf (",");

            }                   // while new stuff for bit assignment

          printf ("1)");

          lastwpos = ctok_nexttokpos (&tok);
        }                       // if "bitmatch" identifier token


      pos = ctok_nexttokpos (&tok);

    }

  if (tok.toktype != CTOK_EOF)
    synterr (&tok, "C parser error");

  if (lastwpos < pos)
    {
      fwrite (ctok_getdata (lastwpos), pos - lastwpos, 1, stdout);
    }


  return 0;
}

Cilove prekladace jsou gcc, llvm, msvc.

Ma to 2 problemy:

- idealne bych potreboval nejak vystup poslat do prekladace bez generovani mezisouboru. Videl jsem nejake snahy o vlastni preprocesor ( https://stackoverflow.com/questions/3545875/custom-gcc-preprocessor ), ale takhle to nechci, navic msvc (Windows) bude problem. Idealni by byl nejaky parametr typu '-custom-preprocessor-before-cpp1=...'. Nenasel jsem. Nebo to tam dostat pres pipe. Nenasel jsem jak.

- potrebuju zachovat cisla radek (pocitejme s tim, ze nahrazovane "volani" bitmatch budou i viceradkova, s komentari,atd.) , aby kdyz se seknu nekde v kodu slo hledat chyby (nutne aby to chodilo alespon v gcc/llvm, msvc by bylo fajn, predpokladam ze #line by to nejak mel resit, ale nejak se mi zatim nedari. Jak na to?

Mimo tyto dotazy by mne jeste zajimalo, jestli nejake moderni jazyky poskytuji knihovny, ktere tohle umoznuji napsat s kratsim kodem. C tokenizer vyuziva jen libc a ma pocty radek:  740 ctok.c / 177 ctok.h; jsem takova kozerva, treba mi nekdo ukazete ze s "modernim programovanim" to jde udelat jednoduseji.

2
Hardware / Získání dat z diskety ve formátu IBM HDR1
« kdy: 23. 03. 2023, 17:19:54 »
Abych nevymyslel znovu kolo, radsi se zeptam mistnich odborniku .. tusite jak extrahovat diskety IBM formatu s "HDR1"? Vypada to celkem podobne k https://www.ibm.com/docs/en/zos/2.1.0?topic=format-standard-data-set-label-1-hdr1eov1eof1

konkretne mi jde o http://www.bitsavers.org/bits/IBM/5280/SS/ ; zde davam dump prevedeny z EBCDIC na citelne ASCII (vlevo HEX je original):

Kód: [Vybrat]
EBCDIC dump SYSCON7.IMD:
00000000:  49 4D 44 20 31 2E 31 38  3A 20 20 36 2F 30 38 2F | .(..............
00000010:  32 30 31 37 20 31 35 3A  30 38 3A 33 36 0D 0A 1A | ................  tohle je ASCII hlavicka toho image
00000020:  00 00 00 1A 00 01 02 03  04 05 06 07 08 09 0A 0B | ................
00000030:  0C 0D 0E 0F 10 11 12 13  14 15 16 17 18 19 1A 01 | ................
00000040:  C9 D7 D3 F0 F8 40 40 40  40 40 40 40 40 40 40 40 | IPL08
00000050:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000060:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000070:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000080:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000090:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000000A0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000000B0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000000C0:  01 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 | .
000000D0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000000E0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000000F0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000100:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000110:  40 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 |  ...............
00000120:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
00000130:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
00000140:  00 01 40 40 40 40 40 40  40 40 40 40 40 40 40 40 | ..
00000150:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000160:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000170:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000180:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000190:  40 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00 |   ..............
000001A0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000001B0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000001C0:  00 00 01 40 40 40 40 40  40 40 40 40 40 40 40 40 | ...
000001D0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000001E0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000001F0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000200:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000210:  40 40 40 00 00 00 00 00  00 00 00 00 00 00 00 00 |    .............
00000220:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
00000230:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
00000240:  00 00 00 01 C5 D9 D4 C1  D7 40 40 40 40 40 40 40 | ....ERMAP
00000250:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000260:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000270:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000280:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000290:  40 40 40 40 00 00 00 00  00 00 00 00 00 00 00 00 |     ............
000002A0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000002B0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000002C0:  00 00 00 00 01 40 40 40  40 40 40 40 40 40 40 40 | .....
000002D0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000002E0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000002F0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000300:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000310:  40 40 40 40 40 00 00 00  00 00 00 00 00 00 00 00 |      ...........
00000320:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
00000330:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
00000340:  00 00 00 00 00 01 E5 D6  D3 F1 F5 F7 F0 F8 E2 C3 | ......VOL15708SC
00000350:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 C9 C2 |               IB
00000360:  D4 F5 F2 F8 F0 40 40 40  40 40 40 F2 F9 F2 F4 E2 | M5280      2924S
00000370:  C3 F1 D9 F0 F7 F0 E5 F0  F1 40 40 40 40 40 40 40 | C1R070V01
00000380:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000390:  40 F1 F0 F1 40 E6 00 00  00 00 00 00 00 00 00 00 |  101 W..........
000003A0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000003B0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 | ................
000003C0:  00 00 00 00 00 00 01 C8  C4 D9 F1 40 E2 E8 E2 C9 | .......HDR1 SYSI
000003D0:  D7 D3 40 40 40 40 40 40  40 40 40 40 40 40 40 F2 | PL             2
000003E0:  F5 F6 D9 F0 F1 F0 F0 F1  F1 F0 F4 F0 F1 F0 40 40 | 56R01001104010
000003F0:  40 40 C9 40 40 40 F8 F3  F0 F4 F1 F9 40 F2 F5 F6 |   I   830419 256
00000400:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000410:  C4 F0 F4 F0 F1 F1 40 40  40 40 40 40 40 40 40 40 | D04011
00000420:  40 40 40 40 40 40 C9 C2  D4 F5 F2 F8 F0 40 40 40 |       IBM5280
00000430:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000440:  40 40 40 40 40 40 40 01  C8 C4 D9 F1 40 E2 E8 E2 |        .HDR1 SYS
00000450:  C4 C9 D7 D3 40 40 40 40  40 40 40 40 40 40 40 40 | DIPL
00000460:  F2 F5 F6 D9 F0 F4 F0 F1  F1 F1 F0 F5 F0 F1 F4 40 | 256R04011105014
00000470:  40 40 40 C9 40 40 40 F8  F3 F0 F4 F1 F9 40 F2 F5 |    I   830419 25
00000480:  F6 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 | 6
00000490:  40 C4 F0 F5 F0 F1 F5 40  40 40 40 40 40 40 40 40 |  D05015
000004A0:  40 40 40 40 40 40 40 C9  C2 D4 F5 F2 F8 F0 40 40 |        IBM5280
000004B0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000004C0:  40 40 40 40 40 40 40 40  01 C8 C4 D9 F1 40 E2 E8 |         .HDR1 SY
000004D0:  E2 C4 D7 D9 E3 F1 40 40  40 40 40 40 40 40 40 40 | SDPRT1
000004E0:  40 F2 F5 F6 D9 F0 F5 F0  F1 F5 F1 F0 F6 F0 F1 F1 |  256R05015106011
000004F0:  40 40 40 40 C9 40 40 40  F8 F3 F0 F4 F1 F9 40 F2 |     I   830419 2
00000500:  F5 F6 40 40 40 40 40 40  40 40 40 40 40 40 40 40 | 56
00000510:  40 40 C4 F0 F6 F0 F1 F2  40 40 40 40 40 40 40 40 |   D06012
00000520:  40 40 40 40 40 40 40 40  C9 C2 D4 F5 F2 F8 F0 40 |         IBM5280
00000530:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
00000540:  40 40 40 40 40 40 40 40  40 01 C8 C4 D9 F1 40 E2 |          .HDR1 S
00000550:  E8 E2 E3 C2 D3 E2 40 40  40 40 40 40 40 40 40 40 | YSTBLS
00000560:  40 40 F2 F5 F6 D9 F0 F6  F0 F1 F2 F1 F2 F1 F0 F1 |   256R0601212101
00000570:  F4 40 40 40 40 C9 40 40  40 F8 F3 F0 F4 F1 F9 40 | 4    I   830419
00000580:  F2 F5 F6 40 40 40 40 40  40 40 40 40 40 40 40 40 | 256
00000590:  40 40 40 C4 F2 F1 F0 F1  F5 40 40 40 40 40 40 40 |    D21015
000005A0:  40 40 40 40 40 40 40 40  40 C9 C2 D4 F5 F2 F8 F0 |          IBM5280
000005B0:  40 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 |
000005C0:  40 40 40 40 40 40 40 40  40 40 01 C8 C4 D9 F1 40 |           .HDR1
000005D0:  E2 E8 E2 C4 D7 D9 E3 F2  40 40 40 40 40 40 40 40 | SYSDPRT2
000005E0:  40 40 40 F2 F5 F6 D9 F2  F1 F0 F1 F5 F1 F2 F3 F0 |    256R210151230
000005F0:  F0 F8 40 40 40 40 C9 40  40 40 F8 F3 F0 F4 F1 F9 | 08    I   830419
00000600:  40 F2 F5 F6 40 40 40 40  40 40 40 40 40 40 40 40 |  256
00000610:  40 40 40 40 C4 F2 F3 F0  F0 F9 40 40 40 40 40 40 |     D23009
00000620:  40 40 40 40 40 40 40 40  40 40 C9 C2 D4 F5 F2 F8 |           IBM528
00000630:  F0 40 40 40 40 40 40 40  40 40 40 40 40 40 40 40 | 0
00000640:  40 40 40 40 40 40 40 40  40 40 40 01 C8 C4 D9 F1 |            .HDR1
00000650:  40 E2 E8 E2 C3 D3 D6 E2  C5 40 40 40 40 40 40 40 |  SYSCLOSE
00000660:  40 40 40 40 F2 F5 F6 D9  F2 F3 F0 F0 F9 F1 F2 F4 |     256R23009124
00000670:  F0 F1 F5 40 40 40 40 C9  40 40 40 F8 F3 F0 F4 F1 | 015    I   83041
00000680:  F9 40 F2 F5 F6 40 40 40  40 40 40 40 40 40 40 40 | 9 256
00000690:  40 40 40 40 40 C4 F2 F5  F0 F0 F1 40 40 40 40 40 |      D25001
000006A0:  40 40 40 40 40 40 40 40  40 40 40 C9 C2 D4 F5 F2 |            IBM52
000006B0:  F8 F0 40 40 40 40 40 40  40 40 40 40 40 40 40 40 | 80
000006C0:  40 40 40 40 40 40 40 40  40 40 40 40 01 C8 C4 D9 |             .HDR
000006D0:  F1 40 E2 E8 E2 C3 D6 D5  40 40 40 40 40 40 40 40 | 1 SYSCON
000006E0:  40 40 40 40 40 F2 F5 F6  D9 F2 F5 F0 F0 F1 F1 F2 |      256R2500112
000006F0:  F9 F0 F0 F3 40 40 40 40  C9 40 40 40 F8 F3 F0 F4 | 9003    I   8304
00000700:  F1 F9 40 F2 F5 F6 40 40  40 40 40 40 40 40 40 40 | 19 256
00000710:  40 40 40 40 40 40 C4 F2  F9 F0 F0 F4 40 40 40 40 |       D29004
...

Diky za nakopnuti ... cilem je z diskety vytahnout jednotlive soubory (zaznamy).

Pripadne jestli nekdo tusite kde jsou nejake informace k IBM 5280 (jine nez na bitsavers, tam jsou akorat ty diskety a nejake manualy).

3
Vývoj / RISC-V assembler
« kdy: 25. 02. 2023, 23:14:41 »
Hezky vecer,

mel bych  par otazek na mistni znalce RISC-V.

1) proc jsou v nekterych instrukcich tak krypticky prehazovane bity ruznych imm/rel konstant? Napriklad JAL [RV32I] instrukce. Tam je bitove souvisly usek imm skladan jako imm[20] imm[10:1] imm[11] imm[19:12]; Kde se pripadne muzu docist na tema podobnych otazek navrhu R-V ISA, mam jich vic?

2) Jak v gnu as zapisu horni bity nejake adresy pro ucely auipc/lui (nejde mi primo o call). ELF relokace R_RISCV_HI20

3) to same pro dolni - ELF relokace R_RISCV_LO12_I apod.

4) Netyka se asi uplne Risc-V Tusite jak linker (gnu LD) resi RELAX relokaci, jak probehne to vyhozeni instrukce bez toho, aby musel prochazet cely kod a prehazovat vsechny relativni skoky/volani?

Dekuji.

4
Obcas se mi stane, ze mam dostupny nejaky online zdroj pro knizku nebo obrazky, kde je z nejakeho duvodu komplikovano stazeni obrazku hromadne nebo ulozeni PDFka. Aktualne treba "analogove pomucky" z vademecum.nacr.cz jsou obrazky slozene z dlazdic typu https://vademecum.nacr.cz/mrimage/vademecum/zoomify//cz/archives/CZ-100000010/inventare/dao/images/0285/e049d8c9-9663-48ae-b076-03569bda7a71.jpg/TileGroup0/2-0-0.jpg

Jde mi ale o obecny princip, protoze takovych zdroju treba v zahranici jsou stovky (knihovny, archivy, apod.). Potrebuju tedy stahnout celou "knihu" (ukol 1) - zde jde o inventar archivniho fondu, pokud to ma dlazdice jako v prikladu tak ty pospojovat do jednoho obrazku (ukol 2), a pak z toho udelat PDFko nebo to prohnat OCRkem (ukol 3).

Ukol 3 umim-to neni problem.
Ukol 2 umim snadno naprogramovat pomoci libjpeg, treba na to neco existuje.

Ukol 1 aktualne vyresit numim. Napadaji mne 3 cesty

1a - automatizace pomoci prohlizece, prakticke by to bylo jen kdyz by existoval nejaky nastroj na tohle urceny, abych nemusel plodit javascripty pro kazdy pripad :(;

1b - pomoci (lib)curl si naprogramovat nejaky nastroj individualne pro kazdy pripad, ono tech prohlizecu dlazdicovanych knih/map/materialu neni tak moc, asi by to po nejake dobe slo recyklovat

1c - udelat proxyserver, ktery bude ukladat zvolene stranky na disk behem toho jak to clovek bude rucne prochazet. zde se moje cinnost redukuje pouze na lokalizaci dulezitych souboru v http(s) komunikaci, zbytek pak muze proklikat za mne nekdo jiny

A sakozrejme kombinace a-b-c :-).

Nerad bych znovuvynalezal kolo, budu rad za tipy na nejake existujici nastroje.

Cilem je treba OCRkovat tyhle scanovane dokumenty abych z 1000 stran nasel  10 stranek, kde se vyskytuje nejake slovo

Dekuji za pripadne odpovedi.

5
Vývoj / Chování PC-relative LDR u ARM
« kdy: 27. 01. 2023, 15:30:26 »
Mejme ARM Thumb instrukci

LDR rX, [pc+#imm]

marne se snazim najit jak presne se chova na ruznych ARMech (zatim jsem teda zkoumal Cortexy-M). Jde mi o hodnotu PC, ktera se pricita k #imm. Nasmerujete mne nekdo prosim spravnym smerem, kde je idealne soupis (potrebuju to totiz i pro dalsi ARMy). V ARM DDI 0406C jsem to nenasel, asi hledam spatne. Kapitola A8.8.63 LDR (immediate, ARM). Mozna vysvetleni je v A3.2.1 Unaligned data access, LDR ma word alignment.

Ted to delam tak, ze udelam pc&(~3)  + 4 + imm; na to jsem prisel ze mi ty vysledky nevychazely oproti objdumpu resp asm vystupu z gcc, ale mozna to proste ma byt tak, ze se spocte pc + 4 + imm a to se pak alignuje ? No takhle to podle meho nazoru v tom procesoru nechodi. Nasmerujete mne prosim nekdo kde hledat ?

6
Odkladiště / Levné registrace domén v roce 2023
« kdy: 09. 01. 2023, 15:46:01 »
Meli jsme nejake domeny u IONOS (byv. 1&1) a protoze delaji problemy non-US zakaznikum, koukal jsem rovnou na jejich ceny, ktere se trosku za ty roky zvedly. Mame desitky .com, .info, .eu (+ .cz) domen, nemam problem s tim je mit treba u 2 registratoru kde to bude nejvyhodnejsi, staci mi jen vlastni registrace s moznosti editovat tu domenu (DNSSEC+NS)  - jak tohle resite? Na nejakou individualni nabidku to podle mnozstvi domen asi neni, co jsem koukal tak namecheap je .com za $10. Bylo by dobre, aby se dalo platit Paypalem pokud to nebude v CZK, a samozrejme aby to nebyla nejaka pofiderni firma, nektere ty domeny vydelavaji penize, neni nutne setrit za kazdou cenu.

7
Hardware / Sháním informace o ZVT SPU 800 (TP8)
« kdy: 14. 11. 2022, 15:27:42 »
Hledam jakekoliv informace k ZVT SPU 800 (a "CPU" TP8) ("minipocitac" vyrabeny v ZVT z roku cca 1980, z casti postaveny na ALU obvodu 74181, vse ostatni jsou TTL 74xx obvody). Hledam vlastniky cele sestavy, karet, periferii, pametniky, majitele literatury. Aktualne mam pouze knihu "Programovani mikropocitace TP8".

S ohledem na tema serveru a ze se tu v clancich obcas neprimo vyskytly podobne veci, tak treba se tady trefim (zkousel jsem i jinde, celkove bez vetsiho uspechu - mam tedy 2 kontakty na SK na nefunkcni SPUcka ve sbirkach).

Pro ty, kteri vubec netusi o co jde:
Citace
SPU 800 je stavebnicový systém pre prípravu, predspracovanie a prenos dát, vyrábaný v k. p. ZVT Banská
Bystrica. Jadro tohto systému tvorí osembitový procesor TP 8. Operačná pamšť je polovodičová a má rozsah 1 – 64 KByte. Je možné kombinovať památi ROM a RAM. Procesor je vybavený vstupne-výstupnou zbernicou, ktorá umožnuje ovládať až 32 vstupných alebo výstupných zariadení. Periférie pripojitelné k SPU 800 sú mozaiková tlačiaren DZM 180, sériová tlačiaren CONSUL 2111, magnetopásková pamáť GM 5300,
magnetická kazeta, zariadenie pre prenos dát ZPD 1200, dierovač diernej pásky DT 1055, snímač diernych štítkov ARITMA 2050 a ďalšie.

Unix na tom zadny nebezel, ten CPU je hodne primitivni, ale "zle jazyky" tvrdi, ze se autori inspirovali u nejakeho zapadniho minipocitace. Ma to pekny panel se spinaci, kterymi se da naplnit instrukcni registr (a tim programovat pocitac). Neco na zpusob PDP/11 :).

SPU800 byla jakymsi predchudcem 8bitovych pocitacu TNS (periferni sbernice se zda byt kompatibilni).

Dekuji

8
Sítě / Pasivní Wi-Fi repeater na 5km spoj
« kdy: 08. 11. 2022, 12:47:48 »
Kousicek za Prahou bych potreboval udelat spoj na 4,8km. Necekam od toho zadnou rychlost, v podstate se smirim i s nejakym humpolackym resenim na ESP32 (uff.. 2,4GHz), ktere bude tak trosku obchazet standardni wifi komunikaci a jen odesilat (treba i opakovane) data bez vzjamneho handshakingu. Melo by to byt schopne poslat kratkou stavovou informaci a obcas idealne nejaky obrazek z kamery. Opacne bych mel byt schopen tam odeslat nejaky jednoduchy povel typu "sepni rele".

Vyskovy profil: https://paste.pics/JOKTI

Na leve strane je strmy kopec s mym pozemkem, kde si muzu delat relativne co chci. Na prave strane je problem, ze mi v ceste stoji celkem vysoka budova, ale mohl bych na *cizi* dum ve vzdalenosti asi 100m dat pasivni "repeater" (tzn. 2 anteny back-to-back; klidne i nejaka yagi nebo ruzne "Wifi gun"-style anteny s velkym ziskem) a signal si tak ohnout svym smerem :). Dulezite je, ze to asi nesmi zrat zadnou elektrinu, protoze sousedske vztahy, a nemerena spotreba je proste problem, merena je zase moc slozita.

Co myslite, ma to sanci?

(prosil bych laskave diskutujici, aby mi nenabizeli zadna alternativni reseni typu LTE, StarLink, apod. Muj dotaz skutecne zni jak dotahnout nejak wifi na tech 5km v uvedenem vyskovem profilu, a "za roh", nijak jinak).

9
Windows a jiné systémy / Dualboot šifrovaných UEFI Win+Linux
« kdy: 01. 11. 2022, 13:34:56 »
Potebuji na jednom UEFI pocitaci mit 2 sifrovane OS: Win10/11 s Veracryptem, resp. idealni by bylo mit 2 instance Windows (10+11) na 2 ruznych GPT partition, a k tomu Linux (pref. Xubuntu), ktere bude mit full disk encryption (je to dmcrypt? nebo se neco zmenilo?). Potiz nastava v tom, ze alespon jedny z tech Windows budu potrebovat obcas reinstalovat.

Mam 2 dotazy:

- Bude stacit pro reinstalace Windows si udelat zalohu souboru z EFI part, pripadne jde Win nejak primet k tomu, aby mi vzdycky nezabily ten Linux pri reinstalaci (nebo updatu, nebo kdyz si to jen tak rozmysli) ?

- Jdou nejak rozumne udelat ty 2 instalace Win, abych jen v GRUBu vybral kterou chci nabootovat ? Asi chci moc, ze ? Pocitam tam s Veracryptem (jedna se sice o testovaci pocitac, ale budou tam obcas dulezita data)

10
Sítě / Minimalistická implementace PoE 802.3af
« kdy: 23. 07. 2022, 17:04:39 »
Hodilo by se mi do jednoho fastethernet zarizeni, ktere ted navrhuju pridat moznost na PoE, idealne s adapterem tohoto typu (ktere mam) https://www.tenda.cz/article/tenda-poe15f-48v-i-ethernet-power-injector

Odber zarizeni bude do 1A@5V, realne spis polovina ve spicce. Je to pouze pro vyvoj, nebude se to nikde prodavat a tak mi nevadi ze to nebude uplne podle standardu, jde mi o praktickou funkcnost. Koukal jsem na 802.3af a je tam nejaka "domluva" mezi injectorem a device, trosku ale pochybuju, ze to ta Tenda nejak resi (stejne tak jsem koukal do nejake kamery a tam je akorat trafo a step-down).

Takze otazka zni, jak udelat PoE device v co nejjednodussi forme? Mohu si dovolit pouzit prislusne pary bez trafa a hodit za ne graetzuv mustek + kapacity a step-down menic, nebo to zjednodusuju uz moc? Nebo kde snadho sehnat vhodne MALE traficko z tech 48V na neco okolo 3-10V AC ? Bude to takhle fungovat? Mozna jsem hledal blbe, ale je to bud nedostupne, nebo RJ45 w/ gigabit magnetics a neni to uplne levne.

11
Software / Inkrementalni komprese
« kdy: 15. 06. 2022, 13:50:57 »
Resim 2 problemy (na sobe nezavisle, ale svym zpusobem podobne):

- kazdy den stahuji z internetu nejaka data, jedna se o plaintext HTML stranku, kde je dlouhatanska tabulka, ktera se ale meni nejen na konci, ale vyjimecne i uprostred. Potreboval bych tyto z 90% shodne HTML soubory nejak "pribalit" postupne za sebe, takova idealni predstava je  dolepeni do .tar.gz, ktery by si umel vzit stav pred ukoncenim komprese (zapis tar traileru) a umel  tam dolepit ten novy soubor s tim, ze by se asi vyuzil stav kompresoru "z minula". Bylo by to vlastne ekvivalentni reseni vse prekomprimovat znovu, coz je taky asi pruchozi (treba po mesicich), ale nelibi se mi to, protoze dalsi bod

- podobne mam hromadu ruznych PDFek, ktera prichazi nova a nova, je v nich nekolik typu obsahu. Problem je, ze takove PDFko ma treba 300kB, je v nich nekolik typu textu/tabulek, ktere se porad dokola opakuji, obcas to prochazi "rucnim" zpracovanim (ruzne typy exportu/tisk do PDF, apod.). Text samotny nejde bohuzel rozumne vypreparovat, ne bez ztraty informace. V PDFku jsou casto zbytecne obrazky, jsou tam pribalene fonty, apod. No a tohle bych potreboval taky nejak inkrementalne stavet za sebe, aby se vyuzila informace z historickych souboru. Napadlo mne pouzit (udelat?) nastroj, ktery rozbali PDFkove objekty do plaintextu, aby to slo lip komprimovat externe, a hlavne treba ty opakujici se objekty by komprese  vzala z minula.

Prosim jen o hotova minimalisticka reseni (tzn. ne instalace nejakeho molochu), naprogramovat si to nejak asi umim, nebo si umim koupit velky disk a rychlejsi pocitac.

12
Hardware / ESP32-C3 RF součásti - popis
« kdy: 11. 05. 2022, 13:05:42 »
Zajimalo by mne jak funguje radio komponenta (+WIFI/BTLE MAC) na ESP32-C3, pripadne nejakych predchudcich. Konkretne jde o tyto casti z datasheetu: https://pasteboard.co/ZSdyMHjoHnj2.png ; jde mi o registry, zapojeni, atd. Nevim jestli to Espressif outsourcuje nebo si navrhuji sami, takze jakekoliv detaily vc. od koho maji blok pripadne koupeny mne zajimaji.

V minulosti jsem zkoumal GSM RF cast nejakych MediaTek obvodu, podarilo se mi najit, ze MTK to vlastne tehdy slozilo ze dvou "obvodu". Licencovane DSP (tusim TeakLITE) a RF komponenta ktera se puvodne delala jako samostatny obvod (tzn. byl k ni datasheet :) ). DSPcko melo adresni prostor pres DMA propojeny s procesorem. Delal jsem nejake experimenty a s ohledem na to, ze moznosti patchovat ROMku DSPcka byly omezene, vzdal jsem to nakonec.

O nejaky podobny popis mi jde u toho ESP32.

Vim, ze existuje nejaka open implementace SDKcka pro ESP8266, tusim ze to delal nejaky rus, ale nedari se mi to najit, tedy neco jsem nasel, ale to stejne vyuziva binarni knihovny od Espressifu.

13
Software / Hezký terminálový font a font na zdrojáky
« kdy: 25. 04. 2022, 15:57:06 »
Zjistil jsem, ze mi nejak nevyhovuje konzolovy font v putty ve win. Chvili jsem hledal neco lepsiho, nasel ruzne "Comic mono" apod., nakonec si vzpomnel na devadesatky se SunOSem ... nasel bitmapoidni TTFko (je to font Sun Gallant Demi btw) ... a u jednoho serveru si to nastavil https://pasteboard.co/VZABP1Xbi9I9.png

Musim rict, ze nechapu proc, ale ten font se mi jednoduse z nejakeho duvodu libi, a neni to myslim nostalgie. Stejne tak se mi zamlouva treba font z XNU (Apple). Moje otazka je, zda nekdo nemate nejaky podobny font k tomu Sun Gallant Demi ve vektorech (idealne TTF), pripadne XNUckovy font jako TTF (opet vektory)? Takhle bitmapove jsou  ty fonty hrozne na cteni a Sunovska nativni velikost 12x22 mi zrovna nevyhovuje.

Pripadne jestli mate nejake tipy na dalsi zajimave citelne fonty vhodne pro editaci kodu ci terminal? Asi takove zasadni veci jsou abych odlisil snadno 1 a l a I a |, O a 0, apod. Zrovna ten Sunovsky by si mozna zaslouzil nejakou tecku do nuly.

14
Software / Model/výkres z 2D „otisku“ povrchu
« kdy: 28. 03. 2022, 19:05:56 »
Cas od casu resim problem, kdy potrebuju udelat model nejakeho existujiciho vyrobku, ted je to treba prodluzovacka, na kterou chci udelat uchyty.

Videl jsem tento nastroj - https://youtu.be/tO5Ym6-H2Ac?t=515 - kterym se da "zkopirovat" nejaky plochy utvar.

Napadlo mne udelat modifikaci tohoto nastroje a pak nejaky software, ktery by umel ze scanu/fotografie udelat vykres toho co se namerilo. Alternativne to prevest rovnou do 3D pomoci vice takovych nastroju stackovanych nad sebe a pak individualne nafocenych. Snad to vysvetluju srozumitelne.

Celkem velky problem distorze obrazu, ktery vznikne vyfotografovanim (jednak lichobeznikova deformace focenim pod nahodnym uhlem, ale i vada cocky - fotaky na takove "scanovani" nejsou moc vhodne). A neni to uplne primitivni vec, nerad bych vymyslel znovu kolo. Neexistuje nejake takove reseni?

Pro ty co mi navrhnou jine postupy, zvazoval jsem treba udelat 3D scan pomoci nejake appky, ale nic mi doopravdy nechodilo.

15
Mam balik dat, vetsina jsou ruzne PDF, ZIP, JPEG, pripadne ISO soubory. Veci, ktere se daji (slozite) nahradit, je jich nejaka desitka TB. S daty se obcas pracuje, hlavne tak, ze se treba prejmenuji soubory, nebo nejak zabali, rozdeli, apod.

Nechci na to vymyslet nejake slozite archivni reseni, spis jen treba mit 2 kopie tech dat, ktere budu postupne udrzovat aktualni, ale bez naroku na 100% konzistenci. Jsou to data ktera se pouziji stylem "potrebuju se podivat na ..." a pak hledam.

Jak na to? Reseni ze se udela nejaky seznam CRC32/MD5/SHA neni uplne funkcni, takhle jsem to mel doted, rozpadne se to v okamziku kdy se nejak zmeni cesty. Idealni by bylo, kdyby si soubory primo sebou mohly nest informaci o sve integrite, treba CRC32. U ZIPu to je snadne, PDF/ISO/JPEG nebo takove EXE  to uz takhle nemaji. Napadlo me udelat tool, ktery upravi zname typy souboru aby mely nulove nejake CRC32 (ci fixni hodnotu typu 0x55555555), ve spouste formatu souboru je v hlavickach plno hluchych mist, kde se da nejaky dword opravit, aby vysel spravne CRC32.

Touto cestou by sla vetsina souboru overit, ze se vylozene neposkodily nejakou operaci nebo vyhnitim disku. Zajimalo by mne, jestli na tento problem je nejake existujici reseni, abych to nemusel programovat, pripadne nejake jine reseni plnici moji potrebu. Jde mi ciste o overeni, ze data se nejak nahodne neposkodila.

Stran: [1] 2 3 4