← Tutti i video

Programmazione Assembly (x86 e x86-64)

Guarda su YouTube → 39:09 8 giugno 2025

Descrizione

Iscriviti al patron per accedere al materiale dei video! - https://git.hexdump.sh Vuoi ampliare le tue conoscenze informatiche? Scrivimi i tuoi bisogni! - https://esadecimale.it/contact.html I miei progetti: - https://esadecimale.it - https://hexdump.sh Per supportare il mio lavoro: - https://patreon.com/hexdump - https://buymeacoffee.com/hexdump - https://www.paypal.com/donate/?hosted_button_id=T49GUPRXALYTQ Canale telegram: - https://t.me/+cdbmjgB3nCEyMzA0 ------------------------- TIMESTAMP 00:00 Programmazione assembly 19:15 Un programma in x86 32:00 Un programma in x86-64 37:00 Conclusione

Commenti 31

I commenti vengono da YouTube e sono aggiornati periodicamente.

  1. @youtubeviewerxx 8 giugno 2025 2
    Bellissima introduzione all'assembly! Un unico appunto: 'xor' non è più veloce di 'mov', ma i compilatori lo preferiscono perchè occupa meno spazio nel file eseguibile. Quando si compila codice a 64 bit, 'mov rbx, 0' ha bisogno di 64 bit solo per rappresentare lo 0 (la costante deve essere grande quanto il registro destinazione).
    1 risposta
    1. @esadecimale Autore 8 giugno 2025 1
      Grazie mille per il contributo, inizialmente ho pensato al tempo, ma lo spazio è sicuramente un’altra dimensione dí interesse su cui ottimizzare
  2. @GiovanniScafora 8 giugno 2025 1
    Il tuo canale è una miniera inesauribile di preziosissime informazioni. Ti ringrazio per aver condiviso le tue conoscenze.
  3. @zach_95848 11 giugno 2025 1
    Finalmente un contenuto interessantissimo.... Su questo argomento sei il mio mentore...non tanto per il contenuto in se, comunque di altissimo livello, ma per la scelta dell'argomento che potrebbe sembrare arcaico, ma che invece a mio avviso ti apre un'autostrada in termini di cyber Security
  4. @AlbertoAndeliero 8 giugno 2025
    Grazie mille, questo video mi ha aiutato e sedimentare certi concetti.
  5. @martinlutherwrong4040 2 dicembre 2025
    Grazie per la preziosa lezione !
  6. @alienlogix 14 giugno 2025
    grazie per questa lezione inoltre spiegata in maniera molto fluida e pulita, condivido appieno l'annotazione finale sul capire quello che succede quando utilizziamo cose a più alto livello
    1 risposta
    1. @esadecimale Autore 15 giugno 2025
      Ti ringrazio!
  7. @vikingoffice4762 8 giugno 2025
    mi hai fatto venire in mente quando comprai il turbo assembler e turbo c, praticamente ieri
  8. @onaecO 8 giugno 2025
    Sei il Best channel ever!
    4 risposte
    1. @esadecimale Autore 8 giugno 2025
      Adoro il tuo di channel! Frequenti ancora la 42? Io mi ci iscriverò a settembre (se aprono)! Una volta tocca chiacchierare
    2. @rosyp3872 8 giugno 2025
      scusate se mi inserisco, la 42 cos'è? chiedo solo se non è cosa personale, ma solo se può essere qualcosa di interessante da consultare 🙏
    3. @esadecimale Autore 8 giugno 2025
      È una scuola di programmazione, in italia sta a Roma, Firenze, e forse in altre città? non ricordo
    4. @onaecO 10 giugno 2025
      @esadecimale Quando vuoi, conosco persone che attualmente frequentano se vuoi. Io ormai son lontano dai codici, faccio tutt'altro (Hotel Management), CS resta un bell'hobby. Se tu vai alla 42, saresti un semidio viste le tue conoscenze, io l'o iniziata da zero totale (sono un chinesiologo come studi LoL), da li ho creato il mio canale, dal non capire una mazza e zero video tutorial fatti bene. Il mio canale deve salvare i futuri me della 42 🤣
  9. @Fred-e5y2o 8 giugno 2025 1
    4:13 opcode sarebbe il microcodice della CPU. Un byte o 2byte corrisponde a un' istruzione elementare tipo Jump , CMP , add , move eax , ecc...
  10. @Fred-e5y2o 8 giugno 2025
    jne= jump not egual. Salta l' esecuzione se i 2 valori sono diversi. Agisce sull 'ip, che punta all' istruzione successiva.
  11. @piera3922 8 giugno 2025 1
    Grazie, l'assembly mi ha sempre affascinata. Posso chiederti dove hai letto/studiato queste informazioni? Quali sono le tue fonti/libri? Ti seguo con molto interesse, grazie ancora
    1 risposta
    1. @esadecimale Autore 8 giugno 2025 2
      Devo prepare un video sui miei input, non ho però libri specifici un po' internet tra blog e video e tanta sperimentazione sul proprio computer
  12. @samuelepadoan4993 8 giugno 2025
    Gran video. Interessante che vista la semplicità del programma ( che non chiama funzioni della libc ) la versione dinamica è piu pesante. Visto che di solito, basta fare una chiamata qualsiaisi come una printf e la versione dinamica è già piu leggiera della statica 😁. Farai un video dove spieghi nel dettaglio i file ELF e piu nello specifico la relazione tra le section del file asm e quelle dell elf?
    1 risposta
    1. @esadecimale Autore 8 giugno 2025
      Si ho notato pure io quella cosa sul size della versione dinamica, affascinante! Rispetto al file ELF, assolutamente, vorrei fare un video in cui esploro i l formato ELF, poi un video in cui analizzo come viene caricato dal kernel in memoria... Insomma di cose da fare ce ne sono, e sono tutte connesse tra loro, come pezzi di un grande puzzle
  13. @angelofiorillo-sp1fp 9 giugno 2025
    L’architettura x86 è una cisc quindi la lunghezza delle operazioni è variabile esistono mov con immediato a 32 bit e movabs per immediati a 64 bit. L’assembly di questa architettura è più complessa a differenza delle architetture risc che hanno tutte le istruzioni della stessa lunghezza, inoltre hanno un set di istruzioni minimale rispetto alle cisc. Inoltre la questione dello xor per azzerare un valore rientra nella tecnica zeroing idiom in pratica la cpu non effettua l’operazione logica ma utilizza un registro costante a zero. Nella pratica questa istruzione xor reg,reg non consuma risorse mentre la mov ha il suo ciclo di esecuzione.
    1 risposta
    1. @esadecimale Autore 9 giugno 2025
      Molto interessante, ti ringrazio!
  14. @MaxTornado61 8 giugno 2025
    Bel video. Non capisco una cosa. Il numero 1 lo hai usato all' inizio per file descriptor stdout e poi lo hai usato sotto per syscall exit ??
    1 risposta
    1. @esadecimale Autore 8 giugno 2025 1
      Si, stesso numero, diversa semantica. 1 rappresenta sia il file descriptor dello STDOUT, e sia l’indice della sys_exit per Linux 64 bit su x86 Il numero è lo stesso, ma il significato che svolge (semantica) è diverso L’informatica è tutta qui: assegnazione di significato a sequenze di bit. Che poi si li chiamiamo numeri ma alla fine sono sequenze di bit…
  15. @mxpi314 8 giugno 2025
    secondo te ha più senso iniziare da x86-64 o ARM?
    1 risposta
    1. @esadecimale Autore 8 giugno 2025
      Secondo me uno vale l’altro, molti hardware sono ancora in x86-64, ma se hai un dispositivo ARM si può iniziare con quello. Come al solito, molte idee sono cross-platform, e poi ci sono anche tanti dettagli specifici sulla piattaforma, ma il core te lo porti dietro
  16. @Fred-e5y2o 8 giugno 2025
    Che differenza c'è tra la chiamata all' interrupt e la systemcall ? Gli int chiamavo routine del bios o del kernel?
    4 risposte
    1. @esadecimale Autore 8 giugno 2025 1
      Gli int generano un interrupt software (chiamata software trap), che viene gestita dal kernel. Quindi, no, non si passa dal bios. Le differenze specifiche sono tante, ma l'idea di fondo è che la syscall è un modo più performante per cambiare lo stato del programma e del processore e passare da usermode a kernel mode. La int x080 in ultima analisi fa la stessa cosa, ma utilizzando un meccanismo più generale è meno performante, perché prima di processare la syscall devi fare il dispatching del software interrupt. E considera che ogni secondo ci sono tantissime system call, quindi il passaggio user->kernel è estremamente critico e costo
    2. @Fred-e5y2o 8 giugno 2025
      ​@esadecimale forse nella vecchia modalità reale , quella compatibile 8086 gli INT era chiamate al BIOS . Non so se le cpu moderne abbiano ancora questa modalità, ma mi pare di sì. Era l' assembly 8086/88.
    3. @esadecimale Autore 8 giugno 2025 1
      Sarebbe comunque una cosa da approfondire meglio, perché si col passare degli anni tante cose sono cambiate e continuano a cambiare, ed i layer di interfaccia software-hardware diventano sempre più complessi Ottimi spunti, grazie
    4. @Fred-e5y2o 8 giugno 2025 1
      ​@esadecimalecmq i frame buffer video di Linux funzionano anche sulle CPU moderne. E possono essere avviati solo in real mode 8086 allo startup, dopo la cpu passa in modalità protetta. E forse fanno anche il boot anche con freeDOS che è a 16bit real mode. Probabilmente sono ancora retrocompatibili.