C++ ile Assembly arasındaki fark nedir?

Şu attığım şeyi okudun mu sen?


Assembly işlemci üzerinde daha fazla kontrol sağlar ama yazması oldukça uzun ve zordur.
 
Assembly mikroişlemcilerle çalışan bir makine dilidir. Robotik alanda, işlemcilerde kullanılan bir dil. C++ daha kapsamlı ama Assembly kadar performanslı bir dil değil.
 
C++:
 int fibo ( int n )
{
      if (n < 1)
          return 0;
      else
     {
          if (n < 3)
              return 1;
          return fibo(n - 1) + fibo(n - 2);
      }
}

Kod:
#MIPS ASSEMBLY
fibo:
addi $sp, $sp, -12       # Adjust stack for 3 byte push.
sw $s0, 8($sp)           # Push $s0 (For fibo(n - 1))
sw $ra, 4($sp)           # Push $ra (Return Address Register)
sw $a0, 0($sp)           # Push $a0 (First Argument Register)
slti $t0, $a0, 1         # Check if n < 1
# if $a0 < 1 then $t0 = 1 otherwise(n >= 1) $t0 = 0
bne $t0, $zero, L0       # if n < 1 jump L0
# n >= 1 region
slti $t0, $a0, 3         # Check if n < 3
# if $a0 < 3 then $t0 = 1 otherwise(n >= 3) $t0 = 0
bne $t0, $zero, L1       # if n < 3 and n >= 1 jump L1
# n >= 3 region
# Recursive return
# return fibo(n - 1) + fibo(n - 2);
addi $a0, $a0, -1        # $a0 = $a0 - 1
jal fibo                 # fibo(n - 1);
add $s0, $zero, $v0      # $s0 holds result of fibo(n - 1)
addi $a0, $a0, -1        # $a0 = $a0 - 1. $a0 holds already ($a0 - 1)
jal fibo                 # fibo(n - 2);
add $v0, $v0, $s0        # fibo(n - 1) + fibo(n - 2)
j RETURN                 # jump to return
L0:
# return 0
addi $v0, $zero, 0       # Set $v0 = 0
j RETURN
L1:
# return 1
addi $v0, $zero, 1       # Set $v0 = 1
# j RETURN               # No need for jump.
RETURN:
lw $a0, 0($sp)           # Return from jal:restore argument n
lw $ra, 4($sp)           # Restore the return address
lw $s0, 8($sp)           # Restore $s0
addi $sp, $sp, 12        # Pop 3 item off stack
jr $ra                   # Returns

Fark gözle görünebiliyor gibi.
 
Farklı zamanlarda farklı kişiler tarafından geliştirilmiş olduğu için kökenleri çok farklı. Ciddi derecede zorluk farkı var. C++ daha kolaydır. Kullanım alanları da çok farklı. Assembly elektronikçilerin daha çok tercih ettiği bir dil.

En iyisinin hangisi olduğu da tamamen ne amaçla kullanılacağı ve hangi platformda çalıştırılacağına (Windows, iOS, Android,...) bağlı.
 
Farklı zamanlarda farklı kişiler tarafından geliştirilmiş olduğu için kökenleri çok farklı. Ciddi derecede zorluk farkı var. C++ daha kolaydır. Kullanım alanları da çok farklı. Assembly elektronikçilerin daha çok tercih ettiği bir dil.

Pek de öyle değil aslında.
 
Dillerin genel olarak mantığı ve çıktığı kapı aynı oluyor. Söz dizimleri farklı ve hangisini öğrenmek sana kalıyor, önemli olan kendini geliştirebilmen.
 

Yeni konular

Geri
Yukarı