C stesso è quasi un assemblaggio, solo 100 volte più leggibile, e ti aiuta quando hai un sacco di variabili attive. È comunque vicino al linguaggio assembly. Non c'è alcuna operazione in C che non corrisponda quasi direttamente (o anche direttamente) al linguaggio assembly.
ASM: "fare proprio quello che dico, precisamente come lo dico"
C: "fai quello che voglio dire, e si può fare un po 'di riordinamento limitato se è più veloce e non rovinare i risultati "
C è sicuramente la strada da percorrere per qualcosa di diverso da stub molto piccoli che trattano direttamente con la CPU o l'hardware in un modo che è difficile da C (istruzioni speciali per esempio). Anche allora, i buoni compilatori C forniscono queste istruzioni speciali attraverso le intrinseche.
Le moderne CPU sono così complesse, è difficile per un umano prevedere quale effetto avrà una sequenza di istruzioni. Un compilatore può effettivamente gestire micro tutte le latenze e throughput e utilizzare coerentemente sequenze di istruzioni (quasi) ottimali. Un compilatore C oggi quasi certamente supererà un programmatore di assemblaggi umani su un codice tipico. Per i loop stretti, l'assemblaggio ottimizzato per l'uomo può avere un rendimento pari a, ma in genere non di molto.
Suppongo che con un buon assemblaggio in linea sia possibile ottenere risultati migliori rispetto all'assemblaggio puro, poiché il compilatore eseguirà alcune ottimizzazioni. –
Solitamente l'ottimizzatore rimane fuori dai segmenti di assemblaggio in linea partendo dal presupposto che, se ci si è impegnati a scriverlo, lo si intendeva davvero. Questo può essere critico nel firmware di sistema incorporato in cui si potrebbe voler utilizzare un'istruzione specifica per ottenere un effetto, o sprecare deliberatamente uno slot di ritardo della pipeline per ottenere un tempo di ciclo corretto. Il chilometraggio varierà, controllerà il tuo manuale e sicuramente è una caratteristica definita dall'implementazione e non molto portabile. – RBerteig
Bytecode C# è MSIL, se non sbaglio, la lingua di CLR. Puoi fare qualche ritocco, ma penso che l'interprete C# ne faccia già un lavoro abbastanza decente. Lino è interessante in modo sperimentale. Se non altro, ottiene un buon uso pratico da parte del suo creatore. Una volta bella cosa è che è teoricamente portabile a qualsiasi sistema. – CodexArcanum