La parte della stringa binaria che identifica l'istruzione. A cui vanno aggiunte altre componenti, che determinano il tipo di strutture su cui l'istruzione andrà ad operare, eventuali istruzioni ulteriori da accoppiare a quella corrente ( penso ai processori ARM ) ed altri elementi utili. Ma questo è chiarito nei manuali del processore.
richiamare le ISA vere e proprie?
Occhio che per ISA s'intende Instruction Set Architecture, cioè l'insieme di tutte le istruzioni che costituiscono il linguaggio macchina del processore. Perchè se non è ancora chiaro, il linguaggio macchina non è una cosa universale, ma cambia da famiglia a famiglia di processori e spesso anche all'interno della stessa famiglia ( con aggiunte o modifiche ).
Cioè l'ISA non è una cosa fisica, è un'etichetta che si dà all'insieme di tutte le istruzioni del linguaggio macchina. Ed è quella cosa che consente l'interoperabilità tra processori diverse. Pensa ad Intel e AMD. Dal punto di vista elettronico, i loro processori sono completamente diversi. Eppure implementano la stessa ISA, tranne per qualche sporadica e piccola differenza.
senza un assembler a disposizione bisognerebbe scrivere tutto quindi in binario.. ma come fare? guardando direttamente all'architettura della cpu o in riferimento sempre alle ISA?
Allora era questa la vera domanda, come immaginavo. Se non hai un sistema automatico, ovviamente fai a mano. Come scrivevo, se vai nei manuali Intel, troverai per ogni istruzione, il codice mnemonico assembly e le relative traduzioni in binario ( sono più di una perchè per ogni opcode ci sono varie rappresentazioni che esprimono le operazioni su vari tipi di operandi ).
Quindi puoi benissimo scrivere un programma in assembly e lo traduci a mano. Poi devi solo trovare il modo di scrivere quelle stringhe di bit su un file. Il tipo e la struttura di file dipendono dal contesto. Cioè, Linux capisce il formato eseguibile ELF e ovviamente il tuo eseguibile dovrà essere in questo formato. Windows capisce il PE. DOS capisce il formato EXE/MZ, oppure COM ( che è un binario puro ).
E poi c'è la possibilità, se si fa girare un programma senza sistema operativo, di usare un formato binario puro. Cioè prendi la tua codifica in linguaggio macchina e la scrivi così com'è sul file. Senza fronzoli, senza modifiche di alcun tipo.
Occhio che, come scrivevo nell'altro post, non è che 10101001 va scritto sul file così. Se aprendolo con un editor riesci a leggere tutti gli uno e gli zero, allora non hai fatto bene. Quella stringa va messa in una variabile, byte in quel caso perchè sono 8 bit. E il numero che rappresenta va scritto sul file. Non in formato ASCII!!! Cioè 169. Ma, leggendo con un editor, deve uscire questo simbolo ©
E' confusionario lo so. Ma è più semplice a farsi che a dirsi.