асемблер или c++

C/C++, Visual Basic, Pascal и други...
Post Reply
User avatar
aster0uidd
Потребител
Потребител
Posts: 22
Joined: 25 Jul 2015, 10:47
Skype: kaloqn.stankov1
Favorite version: CS: 1.6

асемблер или c++

Post by aster0uidd »

Здравейте!
Искам да уча език за програмиране и се чудя кой от двата в заглавието да избера. Можете ли да ми кажете какви се предимствата и недостатъците на тези два езика и кой е по-подходящ да се учи като първи.
Благодаря предварително!
User avatar
H4CK3R
Потребител
Потребител
Posts: 30
Joined: 28 May 2015, 17:12
Favorite version: CS: 1.6
Location: София

Re: асемблер или c++

Post by H4CK3R »

Примерен код от асемблер ↓

Code: Select all

;-----------------------------------------------------------
101                      ; zstr_count:
102                      ; Броя на zero-terminated ASCII символни низове за определяне на техния размер
103                      ; in:   eax = начален адрес на zero terminated string
104                      ; out:  ecx = брой = дължина на символния низ
105 
106                      zstr_count:                   ; Начало
107 00000030 B9FFFFFFFF      mov  ecx, -1              ; Инициализиране на брояча, предекремент
108                                                    ;  за да компенсира инкремента
109                      .loop:
110 00000035 41              inc  ecx                  ; Добавяне на 1 към брояча
111 00000036 803C0800        cmp  byte [eax + ecx], 0  ; Сравняване на стойността на символните низове
112                                                    ;  [начален адрес в паметта Плюс
113                                                    ;  отместването на цикъла], от нула
114 0000003A 75F9            jne  .loop                ; Ако стойността на паметта не е нулаI,
115                                                    ;  тогава прескача до етикет '.loop',
116                                                    ;  в противен слушай продължава към следващия ред
117                      .done:
118                                                    ; Не извършваме последно увеличаване на стойността (инкрементация),
119                                                    ;  въпреки че броят е с основа 1,
120                                                    ;  не сме включили нулевия terminator в
121                                                    ;  дължината на символния низ
122 0000003C C3              ret                       ; Връщане в извикващата програма
Примерен код от С++ ↓

Code: Select all

#include <iostream>
using namespace std;

int main()
{
  cout << "Hello, World!" << endl;
  return 0;
}
Ти си реши. За мен е по-добре C++!

Edit:

Със С++ можеш да разработваш и приложения за десктоп и телефони, докато асемблер не може това!
User avatar
Mr Invisible
Потребител
Потребител
Posts: 5
Joined: 09 Jun 2015, 15:01
Skype: echo123
CS Nick: Invisible
Location: Nowhere

Re: асемблер или c++

Post by Mr Invisible »

Syntax-a на C++ ще те научи на другите езици, също така на C++ се пише всичко бързо и лесно, само да си го знаеш, assambler е доста стар език, който освен при положение че ще кракваш нещо едва ли ще ти потрябва, макар че ти с времето, ако си добър ще стигнеш и до него. Предпочитам C++ винаги. Дано да имаш познания по един от езиците (някакви), защото 12ти клас е леко късно дори..
User avatar
sHoRtBG
V.I.P
V.I.P
Posts: 208
Joined: 23 Jul 2010, 15:14
Skype: short.bg
CS Nick: sHoRt
Favorite version: CS: 1.6
Location: Сливен, България | Атина, Гърция

Re: асемблер или c++

Post by sHoRtBG »

Зависи какъв процент мазохизъм предпочиташ.. Асембли като език е нещо много динамично. Всяка архитектура процесори има своя имплементация на езика. Команди и т.н., глезотийки като if, while, for and so on ги няма. Там работиш с команди директно към процесора. Примерно if при χ86 архитектура (както и при повечето други) се прави като напишеш 2 блока в кода, един при true и един при false.. После сравняваш пойнтъри, и използваш GOTO/JMP/JNE (Всичко това са команди, които се използват в различни ситуации, и правят почти същите неща).
Простия начин да се направи while/for е следния:
За for цикъл, който ще прави 10 завъртания и нищо друго правиш следното:
#Заделяш два байта памет за буфера който ще се увеличава с една единица и даваш стойност нула:
mov DWORD PTR [rbp-4], 0
#Създаваш един блок който ще бъде тялото на цикъла ти:
.L2:
#Вътре слагаш проверка дали буфера ти е стигнал стойността в случая 10:
cmp DWORD PTR [rbp-4], 10
#Ако е стигнал изпращаш към друг блок:
jle .L1
#В противен случай вдигаш стойността му с една единица:
add DWORD PTR [rbp-4], 1
#И караш процесора да отиде в блок 2, в нашия случай това е същия блок в който в момента сме, и така става един вид цикъл:
jmp .L2

Като цяло така работи езика асембли, учим го в момента, тежко е, особено ако си нямаш хал-хабер от това как работи процесора. + че в момента не съм използвал точната терминология, ако искаш да го учиш поне научи какво е пойнтър и другите подобни. В асембли много неща се правят мнооого трудно.. Да не говорим, че това няма и да проработи ако го компилираш директно. Най-малкото, че не си заделил памет за програмата а и също паметта не е освободена.. Представи си, че "Здравей Свят" за χ86 architecture можеш да го напишеш най-кратко в около 20/25 реда код. На C++ става с 4/5, на скриптов език можеш и с 1/2... Абе първо тръгвай от C++ или нещо още по-просто като C или Java..
User avatar
GluckyT3AM
V.I.P
V.I.P
Posts: 167
Joined: 10 Jan 2013, 15:01
CS Nick: `
Favorite version: CS: Global Offensive
Location: Shrewsbury, Shropshire
Contact:

Re: асемблер или c++

Post by GluckyT3AM »

C++ , ще ти върши повече работа, но все пак ти си знаеш, а за assаmbler'а , тя е по-стара, тоест стар език, няма как за няколко дена/седмици да напишеш нещо, по твой вкус, по-добре ти предлагам да използваш c++ , отколкото стария език .
User avatar
SK Telecom T1
Потребител
Потребител
Posts: 106
Joined: 29 Sep 2009, 08:55
Skype: blacktample
CS Nick: Critfame
Favorite version: CS: Global Offensive
Steam Community ID: critfame
Location: Varnawood
Contact:

Re: асемблер или c++

Post by SK Telecom T1 »

GluckyT3AM wrote:C++ , ще ти върши повече работа, но все пак ти си знаеш, а за assаmbler'а , тя е по-стара, тоест стар език, няма как за няколко дена/седмици да напишеш нещо, по твой вкус, по-добре ти предлагам да използваш c++ , отколкото стария език .
Стар език :D :D :D Всички compilator-и в крайна сметка превръщат кода в асемблер.
User avatar
GluckyT3AM
V.I.P
V.I.P
Posts: 167
Joined: 10 Jan 2013, 15:01
CS Nick: `
Favorite version: CS: Global Offensive
Location: Shrewsbury, Shropshire
Contact:

Re: асемблер или c++

Post by GluckyT3AM »

Това, че го компилират към асемблер, не значи, че ще има нещо по-интересно. :D
Post Reply

Return to “Системно програмиране”