Arvorezinha – HP Precision Architecture (aka PA-RISC aka DEMONIO)
E ca fica mais uma arvorezinha, desta vez numa arquitectura demoniaca.
hpux$ cat arvorezinha.S .LEVEL 1.1 ; cenas gays do hpux .SPACE $PRIVATE$ ; o HPPA funciona por spaces, ler arch book .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31 ; pra mais informacoes ou esquizofrenia antecipada .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82 .SPACE $TEXT$ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44 .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY .IMPORT $global$,DATA .IMPORT $$dyncall,MILLICODE .IMPORT write,CODE ; eh mais simpatico fazer imports .IMPORT exit,CODE .IMPORT __main,CODE .SPACE $TEXT$ .SUBSPA $LIT$ .align 4 STAR .STRING "\x2a\x00" LF .STRING "\x0a\x00" .SPACE $TEXT$ .SUBSPA $CODE$ .align 4 .NSUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY .EXPORT main,ENTRY,PRIV_LEV=3,RTNVAL=GR ; a cena dos privilege levels eh funny main .PROC .CALLINFO FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 .ENTRY .CALL xor %r4,%r4,%r4 ; aka meter %r4 a zero :) arewedoneyet comib,=,n 5,%r4,kk10xbai ; se %r4 for 5, BAI NAO! nop xor %r3,%r3,%r3 ; inicializar o counter do segundo loope letsdothis comb,<=,n %r3,%r4,estrela ; se o %r3 for menor ou igual a %r4 xor %r1,%r1,%r26 ; sim, isto eh um nop ldi 1,%r26 ; escolher o fd (1 eh stdout) ldil LR'LF,%r19 ; copiar a stringue com ldo RR'LF(%r19),%r25 ; paneleirices... ldi 1,%r24 ; length da stringue .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR bl write,%r2 xor %r1,%r2,%r3 ; sim, isto eh um nop addi 1,%r4,%r4 ; incrementar o %r4 b arewedoneyet shladd %r4,2,%r8,%r15 ; sim, isto eh um nop estrela ldi 1,%r26 ; ver outro write ldil LR'STAR,%r19 ; eh a mm merda ldo RR'STAR(%r19),%r25 ldi 1,%r24 .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR bl write,%r2 add %r13,%r14,%r15 ; sim, isto eh um nop addi 1,%r3,%r3 b letsdothis nop ; adivinha... kk10xbai ldi 0,%r26 .CALL ARGW0=GR bl exit,%r2 shrpw %r8,%r7,8,%r9 ; nop nop nop subi,OD 42,%r3,%r12 ; nop nop nop nopppppp! :D .EXIT .PROCEND hpux$ gcc arvorezinha.S * ** *** **** ***** hpux$
jah agora para esclarecer um pouco certas esquisitisses desta arquitectura, para loadar uma word (32 bits), como todas as instruções têm de ter 32bits eh obvio que nao da para meter um endereço com esse tamanho e ainda gastar 6 bits num opcode. entao o que estes genios da computacao fizeram foi primeiro loadar 21 bits e depois os 11 bits restantes.
tipo ali em cima
ldil LR'STAR,%r19
ldo RR'STAR(%r19),%r25
LR' saca 21 bits da string STAR para o %r19
RR' saca os 11 bits que faltam...
digam la, HPPA nao eh uma arquitectura magnifica ? (FUCK NO!)
Faz-me um filho!
Que medo de arquitectura.
Faz-me um filho GAY!!!