[C64] Routine 80x50 in ASM [C64] Routine 80x50 in ASM

Risultati da 1 a 20 di 53

Discussione: [C64] Routine 80x50 in ASM

Visualizzazione Elencata

Messaggio precedente Messaggio precedente   Nuovo messaggio Nuovo messaggio
  1. #11
    Master Control Program
    Data Registrazione
    Jan 2016
    Località
    Firenze
    Messaggi
    9.093
    Gamer IDs

    Gamertag: Recidivo PSN ID: Recidivo_ Steam ID: Recidivo

    Re: [C64] Routine 80x50 in ASM

    Citazione Originariamente Scritto da gnappinox1 Visualizza Messaggio
    Posto solo per dire che l'assembler è il linguaggio del demonio e che sono stato fortunato a studiarlo solo 1 anno, mi vengono ancora i brividi se ci penso

    Inviato dal mio Nexus 7 utilizzando Tapatalk
    Assembly.
    prego.

    Ecco mi hai fatto loggare da pc solo per poter indire tu come eretico della programmazione metterti all'indice e aspettare con calma che venga il tuo turno per arderti li, dove fu arso Savonarola.

    tie'. immondo:

    Codice:
    MY_ASM_START
    
    rD   equ  r2
    rN   equ  r7
    
    ifdef x64
        num_VAR     equ r8
        table_VAR   equ r9
    else
        data_size   equ (REG_SIZE * 5)
        crc_table   equ (REG_SIZE + data_size)
        num_VAR     equ [r4 + data_size]
        table_VAR   equ [r4 + crc_table]
    endif
    
    SRCDAT  equ  rN + rD + 4 *
    
    CRC macro op:req, dest:req, src:req, t:req
        op      dest, DWORD PTR [r5 + src * 4 + 0400h * t]
    endm
    
    CRC_XOR macro dest:req, src:req, t:req
        CRC xor, dest, src, t
    endm
    
    CRC_MOV macro dest:req, src:req, t:req
        CRC mov, dest, src, t
    endm
    
    CRC1b macro
        movzx   x6, BYTE PTR [rD]
        inc     rD
        movzx   x3, x0_L
        xor     x6, x3
        shr     x0, 8
        CRC     xor, x0, r6, 0
        dec     rN
    endm
    
    MY_PROLOG macro crc_end:req
        MY_PUSH_4_REGS
        
        mov     x0, x1
        mov     rN, num_VAR
        mov     r5, table_VAR
        test    rN, rN
        jz      crc_end
      @@:
        test    rD, 7
        jz      @F
        CRC1b
        jnz     @B
      @@:
        cmp     rN, 16
        jb      crc_end
        add     rN, rD
        mov     num_VAR, rN
        sub     rN, 8
        and     rN, NOT 7
        sub     rD, rN
        xor     x0, [SRCDAT 0]
    endm
    
    MY_EPILOG macro crc_end:req
        xor     x0, [SRCDAT 0]
        mov     rD, rN
        mov     rN, num_VAR
        sub     rN, rD
      crc_end:
        test    rN, rN
        jz      @F
        CRC1b
        jmp     crc_end
      @@:
        MY_POP_4_REGS
    endm
    
    MY_PROC CrcUpdateT8, 4
        MY_PROLOG crc_end_8
        mov     x1, [SRCDAT 1]
        align 16
      main_loop_8:
        mov     x6, [SRCDAT 2]
        movzx   x3, x1_L
        CRC_XOR x6, r3, 3
        movzx   x3, x1_H
        CRC_XOR x6, r3, 2
        shr     x1, 16
        movzx   x3, x1_L
        movzx   x1, x1_H
        CRC_XOR x6, r3, 1
        movzx   x3, x0_L
        CRC_XOR x6, r1, 0
    
        mov     x1, [SRCDAT 3]
        CRC_XOR x6, r3, 7
        movzx   x3, x0_H
        shr     x0, 16
        CRC_XOR x6, r3, 6
        movzx   x3, x0_L
        CRC_XOR x6, r3, 5
        movzx   x3, x0_H
        CRC_MOV x0, r3, 4
        xor     x0, x6
        add     rD, 8
        jnz     main_loop_8
    
        MY_EPILOG crc_end_8
    MY_ENDP
    
    MY_PROC CrcUpdateT4, 4
        MY_PROLOG crc_end_4
        align 16
      main_loop_4:
        movzx   x1, x0_L
        movzx   x3, x0_H
        shr     x0, 16
        movzx   x6, x0_H
        and     x0, 0FFh
        CRC_MOV x1, r1, 3
        xor     x1, [SRCDAT 1]
        CRC_XOR x1, r3, 2
        CRC_XOR x1, r6, 0
        CRC_XOR x1, r0, 1
     
        movzx   x0, x1_L
        movzx   x3, x1_H
        shr     x1, 16
        movzx   x6, x1_H
        and     x1, 0FFh
        CRC_MOV x0, r0, 3
        xor     x0, [SRCDAT 2]
        CRC_XOR x0, r3, 2
        CRC_XOR x0, r6, 0
        CRC_XOR x0, r1, 1
        add     rD, 8
        jnz     main_loop_4
    
        MY_EPILOG crc_end_4
    MY_ENDP
    
    end
    e si io mi ci sego su sta roba:

    https://it.wikipedia.org/wiki/Assembly#C-asm
    Ultima modifica di Recidivo; 14-06-17 alle 22:41

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Chi Siamo
Forum ufficiale della rivista
The Games Machine
Seguici su