C Kodlarınız Assembly Dilinde Nasıl Görünür?

0
Soulblighter
Kodlarınızın Assembler karşılığını görmek isterseniz gcc'ye -S anahtarını girmeniz yeterli. Sonucu merak edenler, bu haberin kaynağı olan bu siteye bakabilir.

Görüşler

0
Geryon
Gcc at&t synax assembly çıktısı üretir bu kodları okumak ve yazmak zahmetlidir. Çoğu assembly programcısı Intel synax assembly'ı tercih ediyor. Eğer programınızın nasıl göründüğünü merak ediyorsanız IDA Pro kullanın (Hem linux hemde windows versiyonları mevcud)

Ayırca siteki asm kodlarının IA32 veya IA64 uyumlu bir CPU için olmadığını söyleyebilirim.(Çoğumuz PC kullanıyoruz ve Assembly terimi IA için kullanılır.(Belki kötü bir tanımdır,gereksizdir,aptalcadır... Ama öyle nasıl ki bakkaldan bana bir adet akkor flamanlı lamba ver yerine sadece lamba ver diyorsak bunda böyle, umarım anlatmak istediğimü düzgün anlatabilmişimdir, el fenerinin "assembly"'dan bahsetmediğim anlaşılmıştır
0
tongucyumruk
Pardon ama daha IA'nın I'si ortalıkta yokken insanlar assembly kodu yazıyorlardı. Dahası insanların ASM ile en çok geliştirme yaptıkları platformun da IA olduğundan şüpheliyim. 1980 öncesindeki PDP vs.. gibi makinalarda yazılan ASM kodlarını boşverseniz dahi sanıyorum en çok ASM kodu 80'lerde Amiga ve Commodore gibi platformlarda Demo amaçlı yazılmıştır. Kısacası şu anda çoğunluğun kullanıyor olması Assembly terimini Intel mimarisi ile kısıtlayamaz. Sonuçta bu kadar yaygın olsa da günümüzde Intel mimarisi üzerinde ne kadar ASM tabanlı geliştirme yapılıyordur sizce?

Not: Benim için ASM=6502 mesela...
0
Geryon
"Kısacası şu anda çoğunluğun kullanıyor olması Assembly terimini Intel mimarisi ile kısıtlayamaz."
Tabii ki kısıtlayamaz. Yanlış anlaşılmasın ben 3dNow! dediğizde assembly dışısınız demiyorum. Burada bir kısıtlama söz konusu değil, genel kullanım söz konusu. Siz "6502 Assembly" yada "PIC Assembly" dediğinizde karışınızdaki ne demek istediğinizi daha kolay kavrayacaktır.

"Intel mimarisi üzerinde ne kadar ASM tabanlı geliştirme yapılıyordur sizce?"
Oldukça falza bugün MMX,SSE demek assembly'da kod yazacaksın arkadaş demek. Yaklaşık olarak tüm 3D oyunlarda izleri görebilirsiniz. (Lütfen C derlecilerindeki MMX desteği ile MMX optimizasyonunu (SMID'la kod üretmek desek pek yanlış olmaz sanırım) karıştırmayın. Bugün SMID kullanan Intel'in derleyicisi var bildiğim kadarıyla fakat SMID için yapılan iyileştirme pekde yeterli değil. (Intel'in derleyicisini kötülediğimi düşünmeyin, pek çok derleyiciden(gcc'de dahil) %30 daha hızlı kod üretiyor :) )
0
Soulblighter
Sitedeki Assembly kodları 32 bir PowerPC mimarisine ait. Kullanılan işletim sistemi ise IBM AIX.

Buraya kendi sistemimde (x86) yazdığım basit bir C kodu ve Assembly çıktısını yazıyorum.

C Kodu:
---------------

#include <stdio.h>
main() {
(void) printf("Hello World\ ");
return (0);
}


Assembly çıktısı:
------------------------------
.file "hello.c"
.section .rodata
.LC0:
.string "Hello World\ "
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
andl $-16, %esp
movl $0, %eax
subl %eax, %esp
subl $12, %esp
pushl $.LC0
call printf
addl $16, %esp
movl $0, %eax
leave
ret
.size main, .-main
.section .note.GNU-stack,"",@progbits
.ident "GCC: (GNU) 3.3.6"
0
exalted
Siteyi inceledim, ancak x86 mimarisi asm kodlarına benzetemedim. Yine de bunun bir yolu var mıdır diye büyük merak içerisindeyim. C ile programlamaktan ne kadar zevk alıyorsam asm'den de bir o kadar nefret ediyorum. Şayet x86 ifadeleriyle asm kodu çıktısı üreten bir gcc parametresi varsa lütfen birisi onu buraya yazsın! Böylece sistem mimarisi dersim için teslim etmem gereken projeleri C dilinde yazıp bir hamlede asm'ye dönüştürüp, mutlu mesut teslim edebilirim.

Sevecenlikler,
exalted
0
mentat
asm sevilmez mi ya..

aman dikkat c'den yapacaksan işini derleyici optimizasyonlarını kapat asistan sobelemesin seni..
0
Geryon
Nasıl ki tecrübeli santranç ustaları hangi hamlelerin bir bilgisayar, hangi hamlelerin bir insan tarafından yapıldığını anlyabiliyorsa , tecrübeli bir asm programcısıda bir yere kadar hangi kodun derleyiciden çıktığını hangisinin el ile yazıldığı anlayabilir. (Şüpesiz ki bir yerden sonra aradaki farklı anlamak mümkün olmayacaktır)
0
Ragnor
Intel'in veya Microsoft'un derleyicilerinde de benzer bir özellik olabilir ama kullanmadığım için bilmiyorum. Derleyicilerin Help dosyalarında bu konuda birşeyler olabilir, kurcalayabilirsin.
0
MC
denersen x86 mimarisinde üretilen asm kodunun default olarak x86 kodları olduğunu görebilirsin :)


0
exalted
Bu "x86" mimarisi kod üretimi ile ilgili yazdığımın aslında ifade etmek istediğim şey olmadığının farkına vardım; üstelik olduğu haliyle oldukça da anlamsız kalıyor. Basitçe şöyle ifade etmeye çalışayım: Derleyici çok acımasız kodlar yaratıyor, ben bütün bir dönemi yalnızca asm programlamaya versem yine de o kodu yazamam :) Bilmem anlatabildim mi? İlginiz için teşekkür ederim. Sevecenlikler, exalted
0
mentat
sazanlık yapıyor olabilirim ama, bu "haber" tarihteki tüm c derleyicilerinin ilk çıktıkları günden beri sahip oldukları bir özelliğin gcc'de nasıl kullanıldığını mı söylüyor bize? ama help var zaten..
0
FZ
Sizleri denemek için komplo kurduk, düşündük taşındık, bazı üyelerimiz böyle "lurker" modunda izliyo izliyo ama hiç bişi yazmıyo, bi kontrol edelim öldüler mi kaldılar mı dedik, bam tellerine basalım dedik :-P

O diil de, ben Hacker's Delight kitabını istiyorum, var mı okumuş olan? Yorum yapabilecek olan?
0
Geryon
"O diil de, ben Hacker's Delight kitabını istiyorum, var mı okumuş olan? Yorum yapabilecek olan?"
FZ, sen bana tavsiye etmedin mi o kitabı ? :D bak bulurum forumlarda :D
İlk okuyana bırakmak lazım ilk yorumları diyorum ve seni dinliyorum. 2. yorumu ben yaparım:D
0
FZ
Bulup gösterirsen forumlarda sevinirim. Benim hatırladığım ben bu kitabı yaklaşık bir sene önce DDJ dergisindeki bir yazıda mı ne gördüm (ama ben şimdi bulup gösteremem).
0
Geryon
http://www.fazlamesai.org/forum/viewtopic.php?t=1189
10. mesaj
0
ttk
Sahi, siteye girince isimlerini yanda listede gördüklerimizden neredeyse %50'den fazlası (yoksa daha da mı fazla) hiç yorum vesaire yazıp katkıda bulunmuyorlar (benim gibi bazıları ise geyik yapıp sesini bir türlü kesmiyor o da ayrı mesele, "bilgisi yok fikri var" diyenlerin malzemesi eksik olmasın diye mesai yapıyorum burada, kıymetimiz bilinsin :)
0
ttk
Bu arada, adresi verilen site epey güzel bir yere benziyor.
Görüş belirtmek için giriş yapın...

İlgili Yazılar

ikiwiki: Bir Wiki Daha Mı? Yoksa Daha Fazlası Mı?

FZ

ikiwiki alışageldiğimiz wiki tarzı içerik yönetim sistemlerinden biraz daha farklı. Veriyi depolamak için Subversion ve Git kullanan ikiwiki, sözdizim olarak Markdown'ı benimsemiş durumda. Blog olarak da kullanılabilme özelliğine sahip ikiwiki sistemi favori editörünüzle "offline" olarak çalışıp istediğiniz zaman wikiyi güncellemenize de izin veriyor. Detaylı özellik listesi burada.

Not: Haber verdiği için roktas'a teşekkürler.

GCC 4.0 geliyor, RC1 yayınlandı

Soulblighter

C, C++, Objective-C, Fortran, Java ve ADA dillerinde yazılmış programları 15'in üzerinde farklı bilgisayar mimarisi için derlememize imkan veren GCC (GNU Compiler Collection) 4.0 RC1 yayınlandı. Değişiklikleri buradan okuyabilir, buradan da GCC 4.0 RC1'i indirebilirsiniz.

GNU/Linux sistemlerin en önemli, kritik ve olmazsa olmaz bileşenlerinden biri olan GCC derleyici süitinin yeni sürümü ile birlikte bu derleyici ile derlenen Firefox, OpenOffice.org, Linux çekirdeği gibi pek çok yazılımın kalitesinde ve performansında artış bekleniyor.

PostgreSQL'in yeni sürümlerinde kritik hatalar düzeltildi

madness

PostgreSQL 7.2, 7.3 ve 7.4 serilerinde bulunan ve veri bütünlüğünü ilgilendiren bir hata nedeniyle, bu ana sürümlerin yeni alt sürümleri duyuruldu.

Kullanıcıların en kısa zamanda bu yeni sürümlere geçmeleri gerekiyor.

PostgreSQL'in Türkiye'deki FTP yansısı olan ftp6.tr.PostgreSQL.org adresinden yeni sürümler indirilebilir.

Ayrıca aynı FTP sitesinden Red Hat Enterprise Linux, Red Hat 9, Fedora Core 1 ve Fedora Core 2 için gerekli (S)RPM paketleri de indirilebilir.

Ayrıntılar için: http://www5.tr.postgresql.org/news/219.html

Java ve .NET : Derin Rekabet

FZ

Son günlerdeki anketleri inceleyen, yazışmalara,sorulara kulak ve göz misafiri olan FZ dayanamadı ve bulduğu bir röportajı tercüme ederek FM camiası ile paylaşmaya karar verdi. Söz konusu röportaj Java dünyasındaki en kıvrak ve yetkin firmalardan biri olma özelliğini halen koruyan BEA'nın Baş Teknoloji Sorumlusu (Chief Technology Officer - CTO) Dr. Scott Dietzen ile 13 Aralık tarihinde gerçekleştirilmiş. Dr. Dietzen Java camiasında, sunucu tarafındaki Java standartlarının geliştirilmesinde yani J2EE (Java 2 Enterprise Edition) teknolojisinin olgulaşmasındaki öncü rolü ile saygı duyulan bir isim. Kendisi aynı zamanda Java Community Process kurucularından. Bu röportajın ana konusu: Java, .NET, web servisleri, vs.

Seaside Framework ile Internet Programlama

FZ

Bill Clementson, en son gerçekleştirilen Vancouver Lisp Kullanıcıları Toplantısında gerçekleştirilen bir sunumu video olarak kaydedip insanlık ile paylaşmaya karar vermiş.

Söz konusu video, Avi Bryant tarafından Smalltalk [1, 2] dili ile geliştirilmiş Seaside isimli bir Internet programlama "framework"ü ile ilgili ve Common Lisp ile geliştirilmiş sağlam bir Internet programlama "framework"ü olan UnCommon Web'e benzer şekilde "devam ediş" (continuation) tekniğinden faydalanıyor.