Oznámení

Sbalit
Aktuálně žádná oznámení.

AmiDevCPP a vkládání ASM rutiny

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts

    AmiDevCPP a vkládání ASM rutiny

    Onehdá jsem se tady ptal, jak se správně zapisuje ASM rutina v tomto vývojovém "AmiDevCPP" prostředí. A protože žádná odpověď nepřišla, tak jsem dávám ukázku, která mě funguje. Možná to někomu někdy pomůže

    Code:
    /*
     * - output byte for SDI write - D0=byte out
     */
    UBYTE SPI_byte_out_xDCS_asm2 (UBYTE byte_out)
    {
    asm volatile (
                    "lea    0xbfe101,%%a2\n"
                    "moveq  #0x0F,%%d3\n"
                    "moveq  #0x0E,%%d4\n"
                    "moveq  #0x0D,%%d5\n"
                    "moveq  #0x0C,%%d6\n"
                    "move.b %[byte],%%d0\n"
                    "moveq  #0x07,%%d1\n"      //prenos 8mi bitu
        ".ByteOut2:  btst   %%d1,%%d0\n"       //jaky je bit na D1 v bajtu D0
                    "bne.b  .ByteOut3\n"       //je to 1
                    "move.b %%d5,(%%a2)\n"     //MOSI=0
                    "move.b %%d6,(%%a2)\n"
                    "bra.b  .ByteOut4\n"
    
        ".ByteOut3:  move.b  %%d3,(%%a2)\n"    //MOSI=1
                    "move.b  %%d4,(%%a2)\n"
    
        ".ByteOut4:  subq    #0x01,%%d1\n"     //snizime pocitadlo bitu
                    "bcc.b   .ByteOut2\n"      //a jedem dalsi
            :
            : [byte] "d"(byte_out)
            : "d0" , "d1"
            );
    }
    Minimig 4MB/ARM ; FPGA Arcade ; Amiga 500 ; Amiga 2000 ; Amiga 1200 ; AOS 4.1 FE -> WinUAE
Zpracovávám...
X