|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
[assembler] Addio? Gara di "opere d'arti"
Secondo me l'assembler è un linguaggio non è necessariamente caduto in disuso; certo serve solo per scrivere codice per particolari macchine, perlopiù embedded, ma chi l'ha utilizzato a fondo direi che si è reso conto che si possono fare delle vere e proprie opere d'arte!
Propongo una gara: proponete un frammento di codice, spiegando quello che fa, e come lo avete risolto in modo più elegante possibile. Vi faccio un esempio, comincio io! Calcolare il valore assoluto del registro AX (assembler x86) Codice "normale" Codice:
CMP AX,0 JGE non_negativo NEG AX non_negativo: Codice:
CWD XOR AX,DX SUB AX,DX
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
Codice a 32-bit: Codice:
cdq xor eax, edx sub eax, edx |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
Beh dipende, quando ne venni a capo (a tredici anni) mi sentii molto figo!!!
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Vabbe', anche lo scambio di due valori usando tre XOR è fighissimo, ma non mi sembra il caso di fare una gara...
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
Lo conosco anch'io ma posta lo stesso, un pò per figaggine. In molti non ci capiranno niente!!!
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Vabbe', è facile come concetto, è il linguaggio in sé che è ostico. Vado un po' a memoria.
MIPS: Codice:
.data
a: .word 5
b: .word 10
newline: .asciiz "\n"
.text
.globl main
main:
lw $t0, a
lw $t1, b
xor $t2, $t0, $t1
xor $t0, $t0, $t2
xor $t1, $t1, $t2
move $a0, $t0
li $v0, 1
syscall
lw $a0, newline
li $v0, 4
syscall
move $a0, $t1
li $v0, 1
syscall
lw $a0, newline
li $v0, 4
syscall
li $v0, 10
syscall
Codice:
[section .data]
a dw 5
b dw 10
format db "%d\n%d\n\0"
[section .text]
[extern printf]
[global main]
main:
mov eax, [a]
mov ebx, [b]
mov edx, ebx
xor edx, eax
xor eax, edx
xor ebx, edx
push ebx
push eax
push word [format]
call printf
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! Ultima modifica di DanieleC88 : 22-06-2008 alle 23:37. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
Vogliamo la stampa!!!
compariamo la difficoltà di console.writeline(x) e del listato assembly!!!
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Aggiornato, ma non contate troppo sull'affidabilità del codice.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! Ultima modifica di DanieleC88 : 23-06-2008 alle 11:36. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
Eh ma che è quella printf... io volevo la scrittura diretta nella memoria, vi ricordo l'indirizzo B800:0000 ..
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ma poi a B800:0000 ci sta la CGA. Quindi non funzionerebbe con la Hercules (B000:0000).
A parte questo, io preferivo A000:0000, ma in mode 13h...
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
Grande è vero!!! Però non ti dovevi dimenticare di settare la palette!
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Di default c'era una palette già settata con una buona scelta di colori.
Comunque era prassi raderla e impostarne una ad hoc.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Esattamente, mi hanno anticipato gli altri, scrivere direttamente nella memoria solo per far vedere tre XOR mi sembrava un po' una cosa da spaccone, oltre che totalmente inutile...
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Alcuni trucchi funzionano e vanno bene anche oggi.
altri come lo scambio con gli XOR invece erano gia' poco performanti allora, ed utili solo in alcuni casi particolari. Le moltiplicazioni p.es. potrebbero essere utili anche oggi Le seguenti p.es. sono tutte senza stalli. Codice:
X2 lea eax,[eax+eax] X3 lea eax,[eax+eax*2] X4 lea eax,[eax*4] X5 lea eax,[eax+eax*4] X8 lea eax,[eax*8] X9 lea eax,[eax+eax*8]
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:10.



















