Esistono degli assembly SDK? [chiuso]

3

Non ho mai lavorato in assemblaggio, ma ero solo curioso di sapere se esistono SDK per la programmazione di assiemi. Ad esempio, se volessi creare un elenco collegato, ci sono delle librerie disponibili che lo hanno già fatto, o tutto è in genere eseguito da zero?

    
posta ConditionRacer 15.10.2012 - 18:31
fonte

5 risposte

7

A livello di assembly, è possibile creare una "API" utilizzando alcune macro e un set di funzioni di assemblaggio in un file separato che esegue una particolare attività generica, che è possibile chiamare ...

Le funzionalità complesse, incluse le liste concatenate, ecc., sono spesso implementate in un linguaggio di livello superiore e chiamate da assembly, come C, C ++, ecc. Se stai iniziando con ASM, ma vuoi utilizzare più complesse schemi e strutture, chiamare una libreria C è la strada da percorrere.

Il motivo è perché diventa rapidamente un enorme lavoro gestire gli spaghetti dei registri e affrontare il fango quando si inizia a gestire un eccesso di frame dello stack.

Tuttavia , se sei interessato ad implementare cose complesse, è stato fatto prima: Liste collegate in ASM - l'unica cosa che dovresti fare è implementarla come una macro.

Il valore dell'implementazione di funzionalità complesse in ASM è rapidamente superato dai vantaggi dell'utilizzo di un linguaggio di livello superiore all'inizio (che, fyi, è già molto veloce). Se la tua motivazione è veloce, il mio sospetto sarebbe che c'è una libreria C là fuori che può venire molto vicino a ciò di cui hai bisogno.

    
risposta data 15.10.2012 - 19:17
fonte
3

Potrei sbagliarmi su questo, ma suppongo che ci siano SDK relativi alle architetture dei processori, agli ABI e ad altri componenti hardware. A parte questo, immagino che non ci sia nulla di simile.

Tutto in un ASM tende ad essere ad-hoc, quindi non ci sono strutture dati di per sé. Ovviamente, potresti progettare un paio di salti standard che potresti fare con una sorta di contratto di programmazione di ciò che ti aspetteresti di essere nello stack e l'indirizzo di memoria, ma quello sarebbe l'uso di C. Nessun reale vantaggio.

    
risposta data 15.10.2012 - 18:57
fonte
3

Sembra che Assemblea spontanea sia ancora disponibile. Alcuni di questi sono diretti verso MS-DOS, a cui probabilmente non interessa. Altre parti, tuttavia, sono (o dovrebbero essere comunque) ragionevolmente indipendenti dalla piattaforma di destinazione, a condizione che funzioni su un processore x86.

    
risposta data 15.10.2012 - 19:41
fonte
1

NASMX? Masm32? Controlla questi "SDK" che sono solo normali MACRO per la programmazione Win32 con linguaggio ASSEMBLY (per x86 e x64)

Per l'elenco collegato e altri DATASTRUTTURE, potresti doverli codificare tu stesso. I toolkit di linguaggio assembly sono molto simili ai toolkit in linguaggio C: aperti ed estensibili.

    
risposta data 15.10.2012 - 19:10
fonte
1

Solo per combinare ciò che ho detto con ciò che @Prototype Stark ha detto: quando hai un SDK come Windows, ottieni molte librerie e quelle vengono come codice oggetto. Lo stesso tipo che otterresti da un compilatore C / C ++. Il tuo linker ASM preferito si collegherà a quelle librerie e trasformerà tutto in un file eseguibile (a seconda del sistema operativo scelto).

E come puoi usare WinAPI con ASM? Bene, devi seguire le convenzioni di chiamata. Puoi anche specificarlo quando stai compilando il codice C con alcune parole chiave speciali.

    
risposta data 16.10.2012 - 01:08
fonte

Leggi altre domande sui tag