Assembler - Игростроение и развлечение

Форма входа

Приветствую Вас Гость!

Логин:
Пароль:

Наш опрос

Зачем нужны парни?
Всего ответов: 44


    Случайное фото

    Статистика


Поддержите наш проект

WebMoney:
R309699065243
U292079291240
Z373355457648

Счётчики


Rambler's Top100
Рейтинг@Mail.ru

Assembler - Игростроение и развлечение

[ Новые сообщения · Участники · Правила форума · RSS ]

WWW Site Forum
Страница 1 из 11
Игростроение и развлечение » Программинг » Языки программирования и конструкторы » Assembler
Assembler
KostiaДата: Вторник, 24.02.2009, 12:18 | Сообщение # 1
Программист
Группа: Проверенные
Сообщений: 80
Репутация: 2
Статус: Offline
Assembler - это вещь серьезная.
У моего преподавателя по программированию была история. Он как-то решил начать обучение программированию не с паскаля, а именно с ассемблера. В конечном итоге из 12 человек осталось только 5, которые прошли весь курс. Сейчас это самые опытные программисты, работающие в различных организация в разных городах.
У меня предложение, может нам самим попытаться изучить ассемблер? Как вы смотрите на эту идею? Ведь знание машинного языка - это круто, и вам будут доступны ВСЕ ресурсы компа. И с его помощью можно реализовать все. НО это очень сложно.
Что бы привлечь ваше внимание, вот небольшой пример программы на ASM. 64 байта весит программа.
http://depositfiles.com/files/jnizeg12a
Код:
Code
org 100h
use16

     mov     al, 13h
     cmc
     inc     dx
     int     10h
     push    0A000h
     pop     es

loc_1:
     mul     bx
     inc     ax
     add     ax, di
     adc     [si], bx
     div     word[si+0Ch]

loc_2:
     fmul    dword[si]
     fiadd   word[si]
     fistp   word[bx]
     sub     ax, 82h
     xchg    ax, [bx]
     xor     cx, ax
     fild    word[bx]
     fmul    st, st
     xor     bx, bp
     xchg    ax, dx
     fxch    st1
     jnz     loc_2

     faddp   st1, st
     fsqrt
     fdivr   dword[si]
     fild    word[bx]
     fild    word[bp+0]
     fpatan
     setalc
     xchg    ax, cx
     or     al, 87h
     stosb
     jmp     loc_1

Добавлено (24.02.2009, 12:05)
---------------------------------------------
Даа...! Желания никто не изъявил.

Добавлено (24.02.2009, 12:18)
---------------------------------------------
Тогда я один начну, может потом народ присоединится.

Итак! Первой задачей я себе поставил изучить работу процессора. Вот что самого интересного я откопал.
В процессоре есть кэш нескольких уровней 1,2. Кэш используется для запоминания адресации памяти ячее, чтобы в дальнейшем можно было быстро обратиться к той ячейке, к которой мы обращаемся несколько раз подряд.
Кэш первого уровня самый приближенный к процессору, имеет небольшое кол-во памяти, но доступ к памяти осуществляется ~10-12 тактов.
Кэш второго уровня, более отдаленный от процессора, но имеет больше памяти. Доступ ~20-30 тактов.
Бывает кэш третьего уровня, обычно в многоядерных процессорах, и он является общим для всех "ядер" процессора.
Для сравнения, просто доступ к оперативной памяти осуществляется примерно за 100-200 тактов.

Также в процессоре имеется предсказатель переходов, что тоже увеличивает работу процессора. Поэтому важно знать, что все массивы в памяти представлены в виде одной длинной колбасы и если скакать по элементам скажем 2D массива не по x, а по y, то это будет более медленно. Поэтому стоит пользоваться такой конструкцией:

Code
var
m: array[1..10,1..10]of integer;
i: integer;
begin
for y:=1 to 10 do
   for x:=1 to 10 do
     m[x,y]:=50;
end;

И при создании игр типа тетриса, лучше перевернуть массив на 90 градусов, а вывод делать наоборот.
И не стоит забывать, что изображение тоже массив.


Сообщение отредактировал Kostia - Суббота, 21.02.2009, 07:33
 
quadrathellДата: Вторник, 24.02.2009, 12:20 | Сообщение # 2
Admin
Группа: Администраторы
Сообщений: 1018
Репутация: 23
Статус: Offline
не всё так сразу ... сейчас праздники пройдут...
Ассемблер я ещё на спектруме пытался изучать, здесь конечно разница есть ...
ну могу сказать что язык действительно сложный, но очень пригодится для создания какой нибудь примочечки для ваших программ на любом языке... например работы с портами или быстрого получения какого нибудь потокового обсчёта данных...
Полностью написать программу на ассемблере это убийство ... хотя весить она будет мало и работать на много быстрее )


 
KostiaДата: Вторник, 24.02.2009, 12:44 | Сообщение # 3
Программист
Группа: Проверенные
Сообщений: 80
Репутация: 2
Статус: Offline
Да, но с изучение этого языка начинаешь понимать работу самого компьютера, процессора, оперативной памяти..., а значит и на языке высокого уровня можно написать программу которая ни в чем не будет уступать программе на asm. Главное знать как все это работает и как это раелизуется на ассемблере. Ведь компилятор языка высокого уровня сначала переведет код на asm и только потом будет его компилировать.
 
quadrathellДата: Вторник, 24.02.2009, 15:04 | Сообщение # 4
Admin
Группа: Администраторы
Сообщений: 1018
Репутация: 23
Статус: Offline
Kostia, здесь ты абсолютно прав...
даже та маленькая доля знаний машинного кода со спектрума, мне очень облегчает программирование ...
Например в магическом квадрате для постройки и генерации карты я использовал 8 битную систему вычислений, хоть и внедрял это в бейсик... Алгоритм получился маленький и очень быстрый... До сих пор пользуюсь для хранения данных не в переменные а в массивы... - с помощи такого хитрого хранения, мы можем в большой программе ограничится всего десятками переменных...


 
quadrathellДата: Среда, 18.03.2009, 22:05 | Сообщение # 5
Admin
Группа: Администраторы
Сообщений: 1018
Репутация: 23
Статус: Offline
Уроки для изучения ассемблера

Quote
Что это такое? Наверное, каждый из нас думает, что ассемблер это что-то сложное, очень трудное для изучения и вообще недосягаемое. Поверьте мне, я тоже так, когда-то думал. Невозможное возможно. Этот туториал рассчитан для тех, кто даже не знает никакого языка программирования, я вообще выступаю, за то, что надо сначала изучать ассемблер, а потом только языки высокого уровня. Если вы перечитаете весь туториал от этих строк до самого конца то вам будет намного проще изучать другие языки программирования, и вы уже никогда не будете спорить о том какой язык лучше С++ или Delphi.
Прикрепления: asm_publikaciya.rar(116Kb)


 
quadrathellДата: Среда, 18.03.2009, 22:27 | Сообщение # 6
Admin
Группа: Администраторы
Сообщений: 1018
Репутация: 23
Статус: Offline
И ещё Достаточно полный справочник по Ассемблеру
тут


 
SuperstarДата: Воскресенье, 22.03.2009, 15:59 | Сообщение # 7
Заглянувший
Группа: Проверенные
Сообщений: 2
Репутация: 0
Статус: Offline
С этим языком много возни..хотя програмировать на нем довольно таки интересно:) 0:)
 
Игростроение и развлечение » Программинг » Языки программирования и конструкторы » Assembler
Страница 1 из 11
Поиск: