View Single Post
Old 10-08-2014, 01:06   #52
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6028
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Io ho programmato abbondantemente entrambi i processori, ma quasi mai ho avuto bisogno di macro di prologo o epilogo nelle routine che scrivevo. Raramente ho avuto bisogno di più registri di quelli a disposizione e, dunque, di mettere qualche parametro o variabile locale sullo stack (dunque di creare uno stack-frame). Anche perché le istruzioni ENTER/LEAVE e LINK/UNLINK erano decisamente pesanti, per cui in genere evitavo (o, al limite, ricorrevo a qualche "push" / "pop"). In ogni caso si trattava di singole scelte che facevo direttamente, senza ricorrere a macro.
Se hai programmato in assembly senza far uso di macro, specialmente di quelle di prologo ed epilogo significa che hai scritto roba ad-hoc (tipo: ottimizzazione in assembly di singole funzioni precedentemente scritte in C), io ho scritto roba un pochino differente (tipo generatori di codice assemby a partire da bytecode di plc) in cui il codice assembly generato chiamava o veniva chiamato da funzioni scritte in C (con conseguente necessità di supportare l'ABI usata dal compilatore C).
Visto che con certi compilatori l'ABI può variare anche in base alle opzioni di compilazione (uso oppure no di registri come base pointer, numero degli scratch register, ecc.), usare macro (in modo da cambiare il codice in un solo punto invece che ad ogni entry point o punto di chiamata) era una scelta quasi obbligata.

Insomma, le modifiche richieste per il passaggio dal modello a 26bit a quello a 32bit con un ISA come quella degli ARM non mi sembrano così problematiche.
LMCH è offline   Rispondi citando il messaggio o parte di esso
 
1