Mencari Selisih Angka Pada Bahasa C

Iseng2 ngaskus, nemu trit [TANYA] Function mencari selisih angka pada bahasa C.

Saya coba Googling dulu, siapa tau ANSI C menyediakan fungsi semacam itu (fungsi untuk mencari selisih angka). Coba2 cari di sini dan situ, eh gak ada. Wah gawat ternyata beneran gak ada. Ya sudah, berarti harus dibuat solusi dalam assembly, karena C tidak menyediakan fitur built-in.

Ini solusinya (pake GCC, kalo mau diadaptasi ke compiler lain, silahkan ubah bagian assembly-nya).

#include <stdio.h>

int cariSelisih(int, int);

int main(){
	printf("%d\n", cariSelisih(99, 1));
	printf("%d\n", cariSelisih(5, 0));
	printf("%d\n", cariSelisih(39, 17));
	printf("%d\n", cariSelisih(2, -5));
	return 0;
}

int cariSelisih(int aa, int bb) {
	asm
	(
		"subl %1, %0"
		: "=r"(aa)
		: "m"(bb), "0"(aa)
	);

	return aa;
}

Tidak sulit bukan? Assembly saves your day…

2 thoughts on “Mencari Selisih Angka Pada Bahasa C

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s