Halaman

Kamis, 29 Oktober 2020

CATATAN C/C++

ASSEMBLY C/C++

BASIC ASM

Basic Asm bisa berada diluar fungsi.

Format basic assembly GNU GCC :

asm asm-qualifiers( AssemblerInstructions)

asm-qualifiers bisa :

    volatile. Ini optional. Semua basic asm sudah secara implicit volatile. Volatile maksudnya manipulasi input untuk mengubah output.

    inline. Ini dioptimalkan untuk menghasilkan ukuran statement asm sekecil mungkin.

untuk satu baris :


void main()
{
    __asm__("movl %ecx %eax");
}

kalau banyak baris tambahkan \n\t di akhir baris. Hal ini karena gcc mengirim tiap instruksi sebagai sebuah string ke GNU assembler (GAS). Dengan menggunakan newline/tab kita mengirim format yang sesuai untuk assembler. 
Contoh (bisa pakai __asm__ atau asm saja) :

void main()
{
    __asm__("movl %ecx %eax \n\t"
                       "movl %eax %ebx \n\t"
             "movl %ebx %edx"
                        );
}


EXTENDED ASSEMBLY - DENGAN C EXPRESSION OPERANDS

Extended Asm harus berada dalam fungsi.

Format extended assembly GNU GCC :

asm asm-qualifiers( AssemblerTemplate
    : OutputOperands
    : Input Operands
    : Clobbers);

asm asm-qualifiers( AssemblerTemplate
    : 
    : Input Operands
    : Clobbers
    : GotoLabels);

asm-qualifiers bisa volatile, inline atau goto.

    volatile. Volatile maksudnya manipulsi input untuk mengubah output.

    inline. Ini dioptimalkan untuk menghasilkan ukuran statement asm sekecil mungkin.

    goto. Ini menginformasikan pada compiler bahwa statement asm mungkin akan melakukan jump ke label yang ada di daftar GotoLabels.

contoh copy src ke dst + 1

int src = 1;
int dst;

asm("mov %1, %0\n\t"
    "add $1, %0"
    : "=r" (dst)
    : "r" (src));

printf("%d\n", dst);






Tidak ada komentar:

Dasar

TUTORIAL 1 : DASAR BAHASA ASSEMBLY WINDOWS 32bit MASM32 CONSOLE UNTUK PEMULA

Alhamdulillahirabbilalamin, pada saat ini kita semua masih diberi kesempatan untuk terus belajar, kita niatkan mudah-mudahan apa yang kita l...

Postingan Populer