Mostra notizie nelle discussioni
  • Avatar
    ☺
    Scritto da
    altg
    utente che non utiene
    il 2013-09-29 21:56:41.0 alle 2013-09-29 21:56:41.0
    Trollate totali: 11540
    Finito... be', insomma...
    finito il compilatore. Ficoso

    Immagine postata dall'utente

    Almeno quello e` pronto, bugghini minori da scovare a parte, e` finalmente feature-frozen. L'ultima aggiunta sono state delle istruzioni interne chiamate "zeroers", che fanno una cosa molto semplice: quando uno assegna a un registro il valore 0, invece di assemblare ad esempio "mov eax, 00000000" con 32 bit di zeri dietro, il compilatore trasforma l'istruzione nel vecchio trucco dello xor (o del sub) del registro con se` stesso, prendendo 2 byte a posto di 5, tanto i flags non sono controllabili in maniera interstiziale e quindi (cioe` per esempio tra una cmp e il salto condizionato). Piu` che altro una rifinitura.

    Ah, la LCPL2? E` una licenza che pone condizioni identiche alla LGPL, eccetto per un punto: se la ridistribuzione di un prodotto o di una collezione di cui il prodotto fa parte o a cui e` linkato come libreria, e` sfruttata in modo commerciale, sia l'autore che gli intermediari vogliono la loro parte. Solo per il compilatore, comunque. Il resto e` tutto free "come lo intende Shpalman". Serve idealmente ad evitare che qualcuno ridistribuisca il tutto e campi sull'indotto mentre gli autori originali fanno la fame.

    Qui una diapositiva di un listatino che viene dai futuri esempi, che crea un thread e lo mette in esecuzione parallela sul secondo core:

    Immagine postata dall'utente

    E il suo output:

    Immagine postata dall'utente

    Ora non resta che rifinire il tutto, scovare eventuali falle residue che dovrebbero essere piuttosto rare, aggiornare le istruzioni per rifletterci il fatto che e` stato implementato il multithreading riempiendole anche di note sulla thread-safety, e poi dovrebbe finalmente farcela ad uscire a riveder le stelle. Fantasma
    • Avatar
      Scritto da
      Non Autenticato
      il 2013-09-29 22:08:41.0 alle 2013-09-29 22:08:41.0
      Re: Finito... be', insomma...
      > Immagine postata dall'utente

      LCPL Perplesso
      • Avatar
        ☺
        Scritto da
        altg
        utente che non utiene
        il 2013-09-29 22:10:28.0 alle 2013-09-29 22:10:28.0
        Trollate totali: 11540
        Re: Finito... be', insomma...
        > > Immagine postata dall'utente
        >
        > LCPL Perplesso

        L.in.oleum Compiler Public License
        Non e` colpa mia se la sigla e` venuta simile. Anonimo
        • Avatar
          Scritto da
          Non Autenticato
          il 2013-09-29 22:17:04.0 alle 2013-09-29 22:17:04.0
          Re: Finito... be', insomma...
          > > > Immagine postata dall'utente
          > >
          > > LCPL Perplesso
          >
          > L.in.oleum Compiler Public License
          > Non e` colpa mia se la sigla e` venuta simile. Anonimo

          Attento che potrebbe generare confusione. Uno legge di fretta, e crede di aver letto LGPL.
          • Avatar
            ☺
            Scritto da
            altg
            utente che non utiene
            il 2013-09-29 22:18:56.0 alle 2013-09-29 22:18:56.0
            Trollate totali: 11540
            Re: Finito... be', insomma...
            > > > > Immagine postata dall'utente
            > > >
            > > > LCPL Perplesso
            > >
            > > L.in.oleum Compiler Public License
            > > Non e` colpa mia se la sigla e` venuta simile. Anonimo
            >
            > Attento che potrebbe generare confusione. Uno legge di fretta, e crede di aver letto LGPL.

            In effetti...
            Oh, se hai suggerimenti per una sigla diversa, fallili.
            • Avatar
              ☺
              Scritto da
              ::1
              il 2013-09-29 22:19:52.0 alle 2013-09-29 22:19:52.0
              Trollate totali: 12321
              Re: Finito... be', insomma...
              Scritto da: altg
              > > > > > Immagine postata dall'utente
              > > > >
              > > > > LCPL Perplesso
              > > >
              > > > L.in.oleum Compiler Public License
              > > > Non e` colpa mia se la sigla e` venuta simile. Anonimo
              > >
              > > Attento che potrebbe generare confusione. Uno legge di fretta, e crede di aver letto LGPL.
              >
              > In effetti...
              > Oh, se hai suggerimenti per una sigla diversa, fallili.

              Ma le short options? Non dirmi che ha solo long options A bocca storta
              Young professional woman and busy mom.
              • Avatar
                ☺
                Scritto da
                altg
                utente che non utiene
                il 2013-09-29 22:30:54.0 alle 2013-09-29 22:30:54.0
                Trollate totali: 11540
                Re: Finito... be', insomma...
                > > > > > > Immagine postata dall'utente
                > > > > >
                > > > > > LCPL Perplesso
                > > > >
                > > > > L.in.oleum Compiler Public License
                > > > > Non e` colpa mia se la sigla e` venuta simile. Anonimo
                > > >
                > > > Attento che potrebbe generare confusione. Uno legge di fretta, e crede di aver letto LGPL.
                > >
                > > In effetti...
                > > Oh, se hai suggerimenti per una sigla diversa, fallili.
                >
                > Ma le short options? Non dirmi che ha solo long options A bocca storta

                Ma ma... a me sembrano gia` abbastanza short. Come potrei scorciarle significativamente? Voglio dire: piu` che i nomi delle opzioni, a scrivere la command line a mano il problema sarebbe scrivere i percorsi (--act: e` seguito dal percorso alla libreria di attivazione, --env: da quello alla directory "main" dove c'e` un po' tutto il succoso). D'altra parte, se scrivi:

                lcomp miofile.txt

                ti compila il file con le opzioni di default.
                Io su Windoze uso o il drag-and-drop su un collegamento al compilatore, se proprio e` una cosa rapida, cosa che suggerisco per chi vuol provare a compilare esempi a caso per farsi un'idea, oppure un "notepad improved". Uso il vecchio ConText e se devo compilare pigio F9, se devo far partire il compilato pigio F12. La command-line eeeehh vabbe'... si configura, mica si scrive. Imbarazzato
                • Avatar
                  ☺
                  Scritto da
                  ::1
                  il 2013-09-29 22:39:44.0 alle 2013-09-29 22:39:44.0
                  Trollate totali: 12321
                  Re: Finito... be', insomma...
                  Scritto da: altg
                  > [snippyfy]

                  Da tradizione unix lcomp si sarebbe chiamato lc e invece dei due punti come separatore avresti l'uguale.
                  Inoltre da tradizione tutte le long options hanno una corrispondente short options, a meno che non siano specializzazioni di qualcosa.

                  Ad esempio:
                  $ curl --help
                  Usage: curl [options...] <url>
                  Options: (H) means HTTP/HTTPS only, (F) means FTP only
                       --anyauth       Pick "any" authentication method (H)
                   -a, --append        Append to target file when uploading (F/SFTP)
                       --basic         Use HTTP Basic Authentication (H)
                       --cacert FILE   CA certificate to verify peer against (SSL)
                       --capath DIR    CA directory to verify peer against (SSL)
                   -E, --cert CERT[:PASSWD] Client certificate file and password (SSL)
                       --cert-type TYPE Certificate file type (DER/PEM/ENG) (SSL)
                       --ciphers LIST  SSL ciphers to use (SSL)
                       --compressed    Request compressed response (using deflate or gzip)
                   -K, --config FILE   Specify which config file to read
                       --connect-timeout SECONDS  Maximum time allowed for connection
                   -C, --continue-at OFFSET  Resumed transfer offset
                   -b, --cookie STRING/FILE  String or file to read cookies from (H)
                   -c, --cookie-jar FILE  Write cookies to this file after operation (H)
                       --create-dirs   Create necessary local directory hierarchy
                       --crlf          Convert LF to CRLF in upload
                       --crlfile FILE  Get a CRL list in PEM format from the given file
                   -d, --data DATA     HTTP POST data (H)
                       --data-ascii DATA  HTTP POST ASCII data (H)
                       --data-binary DATA  HTTP POST binary data (H)
                       --data-urlencode DATA  HTTP POST data url encoded (H)
                       --delegation STRING GSS-API delegation permission
                       --digest        Use HTTP Digest Authentication (H)
                       --disable-eprt  Inhibit using EPRT or LPRT (F)
                       --disable-epsv  Inhibit using EPSV (F)
                   -D, --dump-header FILE  Write the headers to this file
                       --egd-file FILE  EGD socket path for random data (SSL)
                       --engine ENGINE  Crypto engine (SSL). "--engine list" for list
                   -f, --fail          Fail silently (no output at all) on HTTP errors (H)
                   -F, --form CONTENT  Specify HTTP multipart POST data (H)
                       --form-string STRING  Specify HTTP multipart POST data (H)
                       --ftp-account DATA  Account data string (F)
                       --ftp-alternative-to-user COMMAND  String to replace "USER [name]" (F)
                       --ftp-create-dirs  Create the remote dirs if not present (F)
                       --ftp-method [MULTICWD/NOCWD/SINGLECWD] Control CWD usage (F)
                       --ftp-pasv      Use PASV/EPSV instead of PORT (F)
                   -P, --ftp-port ADR  Use PORT with given address instead of PASV (F)
                       --ftp-skip-pasv-ip Skip the IP address for PASV (F)
                       --ftp-pret      Send PRET before PASV (for drftpd) (F)
                       --ftp-ssl-ccc   Send CCC after authenticating (F)
                       --ftp-ssl-ccc-mode ACTIVE/PASSIVE  Set CCC mode (F)
                       --ftp-ssl-control Require SSL/TLS for ftp login, clear for transfer (F)
                   -G, --get           Send the -d data with a HTTP GET (H)
                   -g, --globoff       Disable URL sequences and ranges using {} and []
                   -H, --header LINE   Custom header to pass to server (H)
                   -I, --head          Show document info only
                   -h, --help          This help text
                       --hostpubmd5 MD5  Hex encoded MD5 string of the host public key. (SSH)
                   -0, --http1.0       Use HTTP 1.0 (H)
                       --ignore-content-length  Ignore the HTTP Content-Length header
                   -i, --include       Include protocol headers in the output (H/F)
                   -k, --insecure      Allow connections to SSL sites without certs (H)
                       --interface INTERFACE  Specify network interface/address to use
                   -4, --ipv4          Resolve name to IPv4 address
                   -6, --ipv6          Resolve name to IPv6 address
                   -j, --junk-session-cookies Ignore session cookies read from file (H)
                       --keepalive-time SECONDS  Interval between keepalive probes
                       --key KEY       Private key file name (SSL/SSH)
                       --key-type TYPE Private key file type (DER/PEM/ENG) (SSL)
                       --krb LEVEL     Enable Kerberos with specified security level (F)
                       --libcurl FILE  Dump libcurl equivalent code of this command line
                       --limit-rate RATE  Limit transfer speed to this rate
                   -l, --list-only     List only names of an FTP directory (F)
                       --local-port RANGE  Force use of these local port numbers
                   -L, --location      Follow redirects (H)
                       --location-trusted like --location and send auth to other hosts (H)
                   -M, --manual        Display the full manual
                       --mail-from FROM  Mail from this address
                       --mail-rcpt TO  Mail to this receiver(s)
                       --mail-auth AUTH  Originator address of the original email
                       --max-filesize BYTES  Maximum file size to download (H/F)
                       --max-redirs NUM  Maximum number of redirects allowed (H)
                   -m, --max-time SECONDS  Maximum time allowed for the transfer
                       --metalink      Process given URLs as metalink XML file
                       --negotiate     Use HTTP Negotiate Authentication (H)
                   -n, --netrc         Must read .netrc for user name and password
                       --netrc-optional Use either .netrc or URL; overrides -n
                       --netrc-file FILE  Set up the netrc filename to use
                   -N, --no-buffer     Disable buffering of the output stream
                       --no-keepalive  Disable keepalive use on the connection
                       --no-sessionid  Disable SSL session-ID reusing (SSL)
                       --noproxy       List of hosts which do not use proxy
                       --ntlm          Use HTTP NTLM authentication (H)
                   -o, --output FILE   Write output to <file> instead of stdout
                       --pass PASS     Pass phrase for the private key (SSL/SSH)
                       --post301       Do not switch to GET after following a 301 redirect (H)
                       --post302       Do not switch to GET after following a 302 redirect (H)
                       --post303       Do not switch to GET after following a 303 redirect (H)
                   -#, --progress-bar  Display transfer progress as a progress bar
                       --proto PROTOCOLS  Enable/disable specified protocols
                       --proto-redir PROTOCOLS  Enable/disable specified protocols on redirect
                   -x, --proxy [PROTOCOL://]HOST[:PORT] Use proxy on given port
                       --proxy-anyauth Pick "any" proxy authentication method (H)
                       --proxy-basic   Use Basic authentication on the proxy (H)
                       --proxy-digest  Use Digest authentication on the proxy (H)
                       --proxy-negotiate Use Negotiate authentication on the proxy (H)
                       --proxy-ntlm    Use NTLM authentication on the proxy (H)
                   -U, --proxy-user USER[:PASSWORD]  Proxy user and password
                       --proxy1.0 HOST[:PORT]  Use HTTP/1.0 proxy on given port
                   -p, --proxytunnel   Operate through a HTTP proxy tunnel (using CONNECT)
                       --pubkey KEY    Public key file name (SSH)
                   -Q, --quote CMD     Send command(s) to server before transfer (F/SFTP)
                       --random-file FILE  File for reading random data from (SSL)
                   -r, --range RANGE   Retrieve only the bytes within a range
                       --raw           Do HTTP "raw", without any transfer decoding (H)
                   -e, --referer       Referer URL (H)
                   -J, --remote-header-name Use the header-provided filename (H)
                   -O, --remote-name   Write output to a file named as the remote file
                       --remote-name-all Use the remote file name for all URLs
                   -R, --remote-time   Set the remote file's time on the local output
                   -X, --request COMMAND  Specify request command to use
                       --resolve HOST:PORT:ADDRESS  Force resolve of HOST:PORT to ADDRESS
                       --retry NUM   Retry request NUM times if transient problems occur
                       --retry-delay SECONDS When retrying, wait this many seconds between each
                       --retry-max-time SECONDS  Retry only within this period
                       --sasl-ir       Enable initial response in SASL authentication
                   -S, --show-error    Show error. With -s, make curl show errors when they occur
                   -s, --silent        Silent mode. Don't output anything
                       --socks4 HOST[:PORT]  SOCKS4 proxy on given host + port
                       --socks4a HOST[:PORT]  SOCKS4a proxy on given host + port
                       --socks5 HOST[:PORT]  SOCKS5 proxy on given host + port
                       --socks5-hostname HOST[:PORT] SOCKS5 proxy, pass host name to proxy
                   -Y, --speed-limit RATE  Stop transfers below speed-limit for 'speed-time' secs
                   -y, --speed-time SECONDS  Time for trig speed-limit abort. Defaults to 30
                       --ssl           Try SSL/TLS (FTP, IMAP, POP3, SMTP)
                       --ssl-reqd      Require SSL/TLS (FTP, IMAP, POP3, SMTP)
                   -2, --sslv2         Use SSLv2 (SSL)
                   -3, --sslv3         Use SSLv3 (SSL)
                       --ssl-allow-beast Allow security flaw to improve interop (SSL)
                       --stderr FILE   Where to redirect stderr. - means stdout
                       --tcp-nodelay   Use the TCP_NODELAY option
                   -t, --telnet-option OPT=VAL  Set telnet option
                       --tftp-blksize VALUE  Set TFTP BLKSIZE option (must be >512)
                   -z, --time-cond TIME  Transfer based on a time condition
                   -1, --tlsv1         Use TLSv1 (SSL)
                       --trace FILE    Write a debug trace to the given file
                       --trace-ascii FILE  Like --trace but without the hex output
                       --trace-time    Add time stamps to trace/verbose output
                       --tr-encoding   Request compressed transfer encoding (H)
                   -T, --upload-file FILE  Transfer FILE to destination
                       --url URL       URL to work with
                   -B, --use-ascii     Use ASCII/text transfer
                   -u, --user USER[:PASSWORD]  Server user and password
                       --tlsuser USER  TLS username
                       --tlspassword STRING TLS password
                       --tlsauthtype STRING  TLS authentication type (default SRP)
                   -A, --user-agent STRING  User-Agent to send to server (H)
                   -v, --verbose       Make the operation more talkative
                   -V, --version       Show version number and quit
                   -w, --write-out FORMAT  What to output after completion
                       --xattr        Store metadata in extended file attributes
                   -q                 If used as the first parameter disables .curlrc
                  
                  Young professional woman and busy mom.
                  • Avatar
                    ☺
                    Scritto da
                    altg
                    utente che non utiene
                    il 2013-09-29 22:58:44.0 alle 2013-09-29 22:58:44.0
                    Trollate totali: 11540
                    Re: Finito... be', insomma...
                    > > [snippyfy]
                    >
                    > Da tradizione unix lcomp si sarebbe chiamato lc e invece dei due punti come separatore avresti l'uguale.
                    > Inoltre da tradizione tutte le long options hanno una corrispondente short options, a meno che non siano specializzazioni di qualcosa.
                    >
                    > Ad esempio:
                    > [clippone]

                    umm... be', non e` che non sia in tempo a ricondurle alle convenzioni unix. Non ci vuole molto, e magari ne guadagnerebbe in familiarita`: tanto sul versante Windows non sono familiari con nulla, su quello unix almeno trovano qualcosa di gia` noto. Ok, imito. Fammi ricapitolare: rimpiazzo i duepunti con uguali, e poi metto che so, --map con l'alternativa -m, --esp con l'alternativa -e, e --del:1 con l'alternativa -d che prende per default 1 ciclo di ritardo tra le istruzioni (e` una feature per rallentare il programma piu` o meno uniformemente e vedere come se la caverebbe su una CPU piu` lenta), e poi boh... poi magari metto anche un'opzioncina per gli altri "application stressing flags". Ecco, non e` piu` feature-frozen. A bocca storta
                    • Avatar
                      ☺
                      Scritto da
                      altg
                      utente che non utiene
                      il 2013-09-29 23:01:04.0 alle 2013-09-29 23:01:04.0
                      Trollate totali: 11540
                      Re: Finito... be', insomma...
                      > > > [snippyfy]
                      > >
                      > > Da tradizione unix lcomp si sarebbe chiamato lc e invece dei due punti come separatore avresti l'uguale.
                      > > Inoltre da tradizione tutte le long options hanno una corrispondente short options, a meno che non siano specializzazioni di qualcosa.
                      > >
                      > > Ad esempio:
                      > > [clippone]
                      >
                      > umm... be', non e` che non sia in tempo a ricondurle alle convenzioni unix. Non ci vuole molto, e magari ne guadagnerebbe in familiarita`: tanto sul versante Windows non sono familiari con nulla, su quello unix almeno trovano qualcosa di gia` noto. Ok, imito. Fammi ricapitolare: rimpiazzo i duepunti con uguali, e poi metto che so, --map con l'alternativa -m, --esp con l'alternativa -e, e --del:1 con l'alternativa -d che prende per default 1 ciclo di ritardo tra le istruzioni (e` una feature per rallentare il programma piu` o meno uniformemente e vedere come se la caverebbe su una CPU piu` lenta), e poi boh... poi magari metto anche un'opzioncina per gli altri "application stressing flags". Ecco, non e` piu` feature-frozen. A bocca storta

                      Ma ora che ci penso, non e` che lato unix non si metteva neanche l'uguale e si interpretavano gli spazi? Come funziona esattamente, di solito? Mi fai uno specchietto con come imposteresti te le opzioni? Newbie, inesperto
                      • Avatar
                        ☺
                        Scritto da
                        ::1
                        il 2013-09-29 23:10:45.0 alle 2013-09-29 23:10:45.0
                        Trollate totali: 12321
                        Re: Finito... be', insomma...
                        Scritto da: altg
                        > > > > [snippyfy]
                        > > >
                        > > > Da tradizione unix lcomp si sarebbe chiamato lc e invece dei due punti come separatore avresti l'uguale.
                        > > > Inoltre da tradizione tutte le long options hanno una corrispondente short options, a meno che non siano specializzazioni di qualcosa.
                        > > >
                        > > > Ad esempio:
                        > > > [clippone]
                        > >
                        > > umm... be', non e` che non sia in tempo a ricondurle alle convenzioni unix. Non ci vuole molto, e magari ne guadagnerebbe in familiarita`: tanto sul versante Windows non sono familiari con nulla, su quello unix almeno trovano qualcosa di gia` noto. Ok, imito. Fammi ricapitolare: rimpiazzo i duepunti con uguali, e poi metto che so, --map con l'alternativa -m, --esp con l'alternativa -e, e --del:1 con l'alternativa -d che prende per default 1 ciclo di ritardo tra le istruzioni (e` una feature per rallentare il programma piu` o meno uniformemente e vedere come se la caverebbe su una CPU piu` lenta), e poi boh... poi magari metto anche un'opzioncina per gli altri "application stressing flags". Ecco, non e` piu` feature-frozen. A bocca storta
                        >
                        > Ma ora che ci penso, non e` che lato unix non si metteva neanche l'uguale e si interpretavano gli spazi? Come funziona esattamente, di solito? Mi fai uno specchietto con come imposteresti te le opzioni? Newbie, inesperto

                        Solitamente i programmi che cadono sotto il cappello della fsf e quindi gnu usano come convenzione quella di accettare long e short options, permettere anche di concatenare le short options se non hanno argomenti, separare gli argomenti con un uguale o con uno spazio. Se il programma ha origine su bsd a volte trovi anche il supporto alle opzioni bsd senza trattino concatenate.
                        Un po' di esempi:
                        ls -al ← due short options concatenate, equivale a ls -a -l
                        ls --all -l ← non puoi mischiare long e short options
                        ls --color=always ← l'argomento lo separi con uguale
                        ls --color always ← oppure con lo spazio

                        Lo stile bsd diventa un casino da parsare, evitalo proprio. Lo trovi come esempio in tar o ps:
                        ps aux ← equivalente di ps -a -u -x oppure ps -aux

                        Come al solito RTFM A bocca aperta
                        Young professional woman and busy mom.
                        • Avatar
                          ☺
                          Scritto da
                          altg
                          utente che non utiene
                          il 2013-09-30 01:08:03.0 alle 2013-09-30 01:08:03.0
                          Trollate totali: 11540
                          Re: Finito... be', insomma...
                          > > > > > [snippyfy]
                          > > > >
                          > > > > Da tradizione unix lcomp si sarebbe chiamato lc e invece dei due punti come separatore avresti l'uguale.
                          > > > > Inoltre da tradizione tutte le long options hanno una corrispondente short options, a meno che non siano specializzazioni di qualcosa.
                          > > > >
                          > > > > Ad esempio:
                          > > > > [clippone]
                          > > >
                          > > > umm... be', non e` che non sia in tempo a ricondurle alle convenzioni unix. Non ci vuole molto, e magari ne guadagnerebbe in familiarita`: tanto sul versante Windows non sono familiari con nulla, su quello unix almeno trovano qualcosa di gia` noto. Ok, imito. Fammi ricapitolare: rimpiazzo i duepunti con uguali, e poi metto che so, --map con l'alternativa -m, --esp con l'alternativa -e, e --del:1 con l'alternativa -d che prende per default 1 ciclo di ritardo tra le istruzioni (e` una feature per rallentare il programma piu` o meno uniformemente e vedere come se la caverebbe su una CPU piu` lenta), e poi boh... poi magari metto anche un'opzioncina per gli altri "application stressing flags". Ecco, non e` piu` feature-frozen. A bocca storta
                          > >
                          > > Ma ora che ci penso, non e` che lato unix non si metteva neanche l'uguale e si interpretavano gli spazi? Come funziona esattamente, di solito? Mi fai uno specchietto con come imposteresti te le opzioni? Newbie, inesperto
                          >
                          > Solitamente i programmi che cadono sotto il cappello della fsf e quindi gnu usano come convenzione quella di accettare long e short options, permettere anche di concatenare le short options se non hanno argomenti, separare gli argomenti con un uguale o con uno spazio. Se il programma ha origine su bsd a volte trovi anche il supporto alle opzioni bsd senza trattino concatenate.
                          > Un po' di esempi:
                          > ls -al ← due short options concatenate, equivale a ls -a -l
                          > ls --all -l ← non puoi mischiare long e short options
                          > ls --color=always ← l'argomento lo separi con uguale
                          > ls --color always ← oppure con lo spazio
                          >
                          > Lo stile bsd diventa un casino da parsare, evitalo proprio. Lo trovi come esempio in tar o ps:
                          > ps aux ← equivalente di ps -a -u -x oppure ps -aux
                          >
                          > Come al solito RTFM A bocca aperta

                          Ok, implemento lo stile normale ma non quello bsd. Meno mi ci rompo le palle meglio e`, per un po' il compilatore lo voglio vedere il meno possibile... mi e` venuto un po' a noia perche` ho sudato per un paio di giorni intensi sulla risoluzione delle forward declarations illimitate in combinazione con la possibilita` di avere delle costanti di tuning che possono essere ridichiarate piu` volte in file diversi per configurare i buffer statici delle librerie e per altre impostazioni "remote" (e per le quali l'ultimo valore e` quello che conta). Cioe`, ho testato sorgenti come questi qui, finche` il compilatore non e` riuscito a sbrogliarli:

                          file1.txt (incluso come libreria)

                          	"constants"
                          
                          		tuner: x = 1;
                          		tuner: z = [y + 10];
                          
                          		w = adr of [see - one];
                          
                          	"workspace"
                          
                          		hmm * adr of [heh - one];
                          		wow * 1;
                          


                          dove ci sono delle costanti tuner, e poi delle costanti definite da "pointer maths", come differenze tra puntatori. Quelle stesse sono usate per dimensionare altre aree (che pero` non sono tra i puntatori, e farebbero aumentare la differenza a ogni passo, altrimenti il compilatore ti dice giustamente "paradoxical entanglement", ma deve essere in grado di riconoscere il caso, il che non e` facilissimo).

                          file2.txt (compilato come principale)

                          	"libraries"
                          
                          		file1;
                          
                          	"constants"
                          
                          		tuner: y = [x + 10];
                          
                          		f = g;
                          		g = h;
                          		h = i;
                          		i = j;
                          		j = k;
                          		k = l;
                          		l = m;
                          		m = see;
                          
                          		r = s;
                          		s = t;
                          		t = u;
                          		u = wow;
                          
                          	"variables"
                          
                          		v = 1;
                          
                          	"workspace"
                          
                          		one * z;
                          		two * y;
                          		see * 1;
                          		ouc * w;
                          		heh * 1;
                          


                          Symbols map risultante dopo il dipanamento (in 16 passi):

                          /C/Users/altg/Undesktop/tuners/file1.txt, line: 11, con: x = 1
                          /C/Users/altg/Undesktop/tuners/file1.txt, line: 12, con: z = 21
                          /C/Users/altg/Undesktop/tuners/file1.txt, line: 14, con: w = 32
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 15, con: y = 11
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 17, con: f = 82623
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 18, con: g = 82623
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 19, con: h = 82623
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 20, con: i = 82623
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 21, con: j = 82623
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 22, con: k = 82623
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 23, con: l = 82623
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 24, con: m = 82623
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 26, con: r = 82590
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 27, con: s = 82590
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 28, con: t = 82590
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 29, con: u = 82590
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 33, var: v = 239
                          /C/Users/altg/Undesktop/tuners/file1.txt, line: 18, adr: hmm = 82525
                          /C/Users/altg/Undesktop/tuners/file1.txt, line: 19, adr: wow = 82590
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 37, adr: one = 82591
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 38, adr: two = 82612
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 39, adr: see = 82623
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 40, adr: ouc = 82624
                          /C/Users/altg/Undesktop/tuners/file2.txt, line: 41, adr: heh = 82656
                          


                          Da sganasciarsi dalle risate a permettere queste cose. A bocca aperta

                          Pero` e` bello, mi piace poter fare tutto coi puntatori e con le dichiarazioni in avanti dove cazzo mi pare. Basta non fare i matti come in quei file che sono apposta composti in maniera assurda... ma questo in pratica. In teoria, volevo che il compilatore potesse capire tutto di un paio di file cosi`.
                        • Avatar
                          ☺
                          Scritto da
                          altg
                          utente che non utiene
                          il 2013-10-01 02:48:33.0 alle 2013-10-01 02:48:33.0
                          Trollate totali: 11540
                          Re: Finito... be', insomma...
                          > > > > > [snippyfy]
                          > > > >
                          > > > > Da tradizione unix lcomp si sarebbe chiamato lc e invece dei due punti come separatore avresti l'uguale.
                          > > > > Inoltre da tradizione tutte le long options hanno una corrispondente short options, a meno che non siano specializzazioni di qualcosa.
                          > > > >
                          > > > > Ad esempio:
                          > > > > [clippone]
                          > > >
                          > > > umm... be', non e` che non sia in tempo a ricondurle alle convenzioni unix. Non ci vuole molto, e magari ne guadagnerebbe in familiarita`: tanto sul versante Windows non sono familiari con nulla, su quello unix almeno trovano qualcosa di gia` noto. Ok, imito. Fammi ricapitolare: rimpiazzo i duepunti con uguali, e poi metto che so, --map con l'alternativa -m, --esp con l'alternativa -e, e --del:1 con l'alternativa -d che prende per default 1 ciclo di ritardo tra le istruzioni (e` una feature per rallentare il programma piu` o meno uniformemente e vedere come se la caverebbe su una CPU piu` lenta), e poi boh... poi magari metto anche un'opzioncina per gli altri "application stressing flags". Ecco, non e` piu` feature-frozen. A bocca storta
                          > >
                          > > Ma ora che ci penso, non e` che lato unix non si metteva neanche l'uguale e si interpretavano gli spazi? Come funziona esattamente, di solito? Mi fai uno specchietto con come imposteresti te le opzioni? Newbie, inesperto
                          >
                          > Solitamente i programmi che cadono sotto il cappello della fsf e quindi gnu usano come convenzione quella di accettare long e short options, permettere anche di concatenare le short options se non hanno argomenti, separare gli argomenti con un uguale o con uno spazio. Se il programma ha origine su bsd a volte trovi anche il supporto alle opzioni bsd senza trattino concatenate.
                          > Un po' di esempi:
                          > ls -al ← due short options concatenate, equivale a ls -a -l
                          > ls --all -l ← non puoi mischiare long e short options
                          > ls --color=always ← l'argomento lo separi con uguale
                          > ls --color always ← oppure con lo spazio
                          >
                          > Lo stile bsd diventa un casino da parsare, evitalo proprio. Lo trovi come esempio in tar o ps:
                          > ps aux ← equivalente di ps -a -u -x oppure ps -aux
                          >
                          > Come al solito RTFM A bocca aperta

                          Che ne dici?

                          Immagine postata dall'utente
                          • Avatar
                            Scritto da
                            Non Autenticato
                            il 2013-10-01 14:59:53.0 alle 2013-10-01 14:59:53.0
                            Re: Finito... be', insomma...
                            > > > > > > [snippyfy]
                            > > > > >
                            > > > > > Da tradizione unix lcomp si sarebbe chiamato lc e invece dei due punti come separatore avresti l'uguale.
                            > > > > > Inoltre da tradizione tutte le long options hanno una corrispondente short options, a meno che non siano specializzazioni di qualcosa.
                            > > > > >
                            > > > > > Ad esempio:
                            > > > > > [clippone]
                            > > > >
                            > > > > umm... be', non e` che non sia in tempo a ricondurle alle convenzioni unix. Non ci vuole molto, e magari ne guadagnerebbe in familiarita`: tanto sul versante Windows non sono familiari con nulla, su quello unix almeno trovano qualcosa di gia` noto. Ok, imito. Fammi ricapitolare: rimpiazzo i duepunti con uguali, e poi metto che so, --map con l'alternativa -m, --esp con l'alternativa -e, e --del:1 con l'alternativa -d che prende per default 1 ciclo di ritardo tra le istruzioni (e` una feature per rallentare il programma piu` o meno uniformemente e vedere come se la caverebbe su una CPU piu` lenta), e poi boh... poi magari metto anche un'opzioncina per gli altri "application stressing flags". Ecco, non e` piu` feature-frozen. A bocca storta
                            > > >
                            > > > Ma ora che ci penso, non e` che lato unix non si metteva neanche l'uguale e si interpretavano gli spazi? Come funziona esattamente, di solito? Mi fai uno specchietto con come imposteresti te le opzioni? Newbie, inesperto
                            > >
                            > > Solitamente i programmi che cadono sotto il cappello della fsf e quindi gnu usano come convenzione quella di accettare long e short options, permettere anche di concatenare le short options se non hanno argomenti, separare gli argomenti con un uguale o con uno spazio. Se il programma ha origine su bsd a volte trovi anche il supporto alle opzioni bsd senza trattino concatenate.
                            > > Un po' di esempi:
                            > > ls -al ← due short options concatenate, equivale a ls -a -l
                            > > ls --all -l ← non puoi mischiare long e short options
                            > > ls --color=always ← l'argomento lo separi con uguale
                            > > ls --color always ← oppure con lo spazio
                            > >
                            > > Lo stile bsd diventa un casino da parsare, evitalo proprio. Lo trovi come esempio in tar o ps:
                            > > ps aux ← equivalente di ps -a -u -x oppure ps -aux
                            > >
                            > > Come al solito RTFM A bocca aperta
                            >
                            > Che ne dici?
                            >
                            > Immagine postata dall'utente

                            Dico che scegliere le parole in modo che le righe siano di larghezza uguale è un po' come camminare senza pestare le giunture tra le piastrelle, ma anch'io una volta lo facevo.
    • Avatar
      ☺
      Scritto da
      altg
      utente che non utiene
      il 2013-09-29 22:09:58.0 alle 2013-09-29 22:09:58.0
      Trollate totali: 11540
      p.s.
      dimenticavo di fare un altro po' di scena e rompere un altro po' di palle, con l'anteprima delle icone del compilatore e di un'applicazione generica compilata con la versione 3:

      Immagine postata dall'utente

      In quella del compilatore c'e` sempre Martin. Innamorato
    • Avatar
      Scritto da
      Non Autenticato
      il 2013-09-29 22:38:44.0 alle 2013-09-29 22:38:44.0
      Re: Finito... be', insomma...
      Scritto da: altg
      > finito il compilatore. Ficoso
      >
      > Immagine postata dall'utente
      >
      > Almeno quello e` pronto, bugghini minori da scovare a parte, e` finalmente feature-frozen. L'ultima aggiunta sono state delle istruzioni interne chiamate "zeroers", che fanno una cosa molto semplice: quando uno assegna a un registro il valore 0, invece di assemblare ad esempio "mov eax, 00000000" con 32 bit di zeri dietro, il compilatore trasforma l'istruzione nel vecchio trucco dello xor (o del sub) del registro con se` stesso, prendendo 2 byte a posto di 5, tanto i flags non sono controllabili in maniera interstiziale e quindi (cioe` per esempio tra una cmp e il salto condizionato). Piu` che altro una rifinitura.
      >
      > Ah, la LCPL2? E` una licenza che pone condizioni identiche alla LGPL, eccetto per un punto: se la ridistribuzione di un prodotto o di una collezione di cui il prodotto fa parte o a cui e` linkato come libreria, e` sfruttata in modo commerciale, sia l'autore che gli intermediari vogliono la loro parte. Solo per il compilatore, comunque. Il resto e` tutto free "come lo intende Shpalman". Serve idealmente ad evitare che qualcuno ridistribuisca il tutto e campi sull'indotto mentre gli autori originali fanno la fame.
      >
      > Qui una diapositiva di un listatino che viene dai futuri esempi, che crea un thread e lo mette in esecuzione parallela sul secondo core:
      >
      > Immagine postata dall'utente
      >
      > E il suo output:
      >
      > Immagine postata dall'utente
      >
      > Ora non resta che rifinire il tutto, scovare eventuali falle residue che dovrebbero essere piuttosto rare, aggiornare le istruzioni per rifletterci il fatto che e` stato implementato il multithreading riempiendole anche di note sulla thread-safety, e poi dovrebbe finalmente farcela ad uscire a riveder le stelle. Fantasma

      typo
<softv>

Pagina generata in 181 millisecondi

Utenti attivi: 11 nell'ultimo minuto, 24 negli ultimi cinque minuti, 51 negli ultimi 15 minuti