Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/35: Рейтинг темы: голосов - 35, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 10

fasm, win 7 64, процессор 64

07.07.2013, 15:53. Показов 7278. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Процессор на моём компе Intel® Core™ i3-2370M Processor
(3M Cache, 2.40 GHz). Его архитектура 64 битная. ОС у меня win 7 тоже 64 бит.
Я так понимаю, что FASM он для программирования такого процессора как у меня. Я прав?
Ещё прошу посоветуйте пожалуйста информацию по архитектуре 64 битных процессоров!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.07.2013, 15:53
Ответы с готовыми решениями:

Процессор для Win 8
Имеется старенький комп: мать EP-4PDA3I-3, процессор Intel Pentium 4 3,0 Ghz, DDR 1 гиг, ОС -Windows ХР. Прочитал на сайте Майкрософт что...

Процессор,проги,win 7?
Привет, у меня возник вопрос. Когда давал на сборку мне новых внутренностей поставили на 4х ядерку Win 7 (х64) и кучу разных прог, я хочу...

Win 10 Грузит Процессор на 100%
Привет,я уже весь ютуб обшарил но ответа не нашел в чем проблема. У меня стоит вин 10 про х64 (При этом казус в диспетчере висят...

43
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
07.07.2013, 16:11
фасм может генерировать код следующих разрядностей: 16, 32, 64.

информацию найдете в книге Р. Аблязова "Программирование на ассемблере на платформе x86-64"
1
Эксперт быдлокодинга
 Аватар для Полный 30h
2094 / 528 / 70
Регистрация: 04.11.2010
Сообщений: 1,314
20.07.2013, 18:42
Цитата Сообщение от Labmath Посмотреть сообщение
FASM он для программирования такого процессора как у меня. Я прав?
Прав.

Цитата Сообщение от Labmath Посмотреть сообщение
посоветуйте пожалуйста информацию по архитектуре 64 битных процессоров
Если знаком уже с ассемблером то это.
http://www.intel.com/content/w... anual.html

http://www.intel.com/content/w... anual.html
В основном всё те же команды, расширеные до обработки 4 слов (64 бит) в т.ч. сканирование строк, пересылка оных и пр. хуерга. исчезли команды PUSHAD, POPAD
Азы.
http://pirogov-vju.livejournal.com/1128.html]

Удобная прога для написания кода с болванками в т.ч. под 64 бита
http://asmworld.ru/instrumenty/fasm-editor-2-0/

Про регистры их половинки, четвертушки, осьмушки. К примеру у новых регистров R8-R15 нет старших осьмушек типа AH, BH и т.д. а есть просто осьмушки R8d, R9d и т.д.
http://www.cracklab.ru/faq/Регистр
1
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
21.07.2013, 12:19
64-битный проц - ИМХО зло. они его изговняли до ужаса. единственный плюс это ворочение больших чисел. больше плюсов, кроме минусов, не вижу
0
Эксперт быдлокодинга
 Аватар для Полный 30h
2094 / 528 / 70
Регистрация: 04.11.2010
Сообщений: 1,314
21.07.2013, 14:09
Troll_Face, ты как дедушка провинциального городка образца 1900 года на открытии первой трамвайной линии. Дескать тряско, шумно, опасно.
Однако рано или поздно его придётся осваивать. По мне так главным тормозом прогресса является сам человек. Взять хотя бы таблицу ASCII. Сто лет назад бы уже собраться программистам и Ко. сходить на кладбище и забить осиновый кол в могилу того кто межу 1-9 и A-F двоеточий и стрелок напихал. А после обмыв мероприятие написать новую, побожившись на то, что кто по старому кодить будет, тому на ADSL модеме сидеть пожизнено с монохромным дисплеем.
1
Модератор
10352 / 5638 / 3395
Регистрация: 17.08.2012
Сообщений: 17,205
21.07.2013, 17:28
Цитата Сообщение от Troll_Face Посмотреть сообщение
они его изговняли до ужаса
Полный 30h, так и есть. Начиная с процессоров I8086/I8088 развитие аппаратной части процессоров Intel шло по принципу приваривания к этому процессору очередного "костыля", с неуклюжими извинениями про совместимость со старыми программами. И система комманд сегодняшнего X86-64 представляет из себя свалку.

Не по теме:

Куда уж Intel до логичности и простоты системы комманд PDP-11/VAX-11, к примеру. Там одни режимы адресации многого стоят. И пересылка память-память была всегда.



Добавлено через 4 минуты

Не по теме:

Да, кстати... --i, i--, ++i, i++ - эти все мнемоники появились именно из-за режимов адресации PDP-11. И язык "C" писался под PDP-11... А Intel... Самый распространённый. Жаль, что фирма DEC канула в лету...



Добавлено через 4 минуты

Не по теме:

Разве что микроконтроллеры MSP430 от TI есть... Душу греет...

0
Эксперт быдлокодинга
 Аватар для Полный 30h
2094 / 528 / 70
Регистрация: 04.11.2010
Сообщений: 1,314
21.07.2013, 17:45
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Полный 30h, так и есть.
Я не спорю, но реальность такова, что кривое оно или нет, если ты хочешь использовать всё то хорошее что в нём всё же есть его придётся изучать. Либо в последующем придётся выкручиваться хорошим знанием 32 бит. Опять же до тех пор пока и они не канут в лету.
Примеров как хорошие фирмы (бренды) сливались совсем или здорово теряли в деньгах из за нежелания идти в ногу со временем - тьма.

Добавлено через 3 минуты
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
И система комманд сегодняшнего X86-64 представляет из себя свалку.
Тут пожалуй не соглашусь. 64 мало чем отличается от 32 в плане основного набора команд. Прямой наследник и есть. Впрочем сужу со своей колокольни знатока начального уровня знакомого с парой десятков основных команд.
0
21.07.2013, 18:48

Не по теме:

Полный 30h, дело даже не в том, что 32 или 64 бита... Нет в системе комманд X86-64 хорошей структурированности, система комманд негибкая и состоит из сплошных исключений и умолчаний с договорённостями.

0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
21.07.2013, 18:57
Цитата Сообщение от Полный 30h Посмотреть сообщение
ты как дедушка провинциального городка образца 1900 года на открытии первой трамвайной линии. Дескать тряско, шумно, опасно
видать ты поверхностно смотришь на сию прелесть. а вот как смотрю я: в чем прелести 64 битного проца? появились 64 битные регистры. появилась еще куча регистров. это все хорошо. а только на кой? ответ прост: этот говнопроц (да простят меня программисты) не может ничего, кроме как поддерживать совместимость со старыми моделями и ворочить 64 битные числа. еще что. возможность адресовать туеву хучу оперативной памяти. ммм, это все хорошо. да только система команд. мало того, что из памяти в память нельзя байты перебрасывать, так теперь еще и нельзя класть 64 битные константы в память. спрашивается: на кой? не удивлюсь если много задачность в нем реализована в качестве "совместимости с предыдущими моделями", да ито криво. убраны сегменты. вся память - одна большая куча. а вот в 32 битном это было. было проще отслеживать исключения. а как сейчас отследить попытку обращения к определенному сегменту - хз. это я по памяти, если почитать маны, может еще изъяны найду. я конечно согласен, что привыкать придется, но на кой он нам?
0
21.07.2013, 18:59

Не по теме:

Но... X86 - самый распространённый тип процессоров, и, что бы я не говорил, работать приходится именно с его системой комманд... Хоть тресни...

0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
21.07.2013, 19:00
ах да, про многозадачность: теперь ее вроде как аппаратно не реализуют. придется делать программно.
0
Модератор
10352 / 5638 / 3395
Регистрация: 17.08.2012
Сообщений: 17,205
21.07.2013, 19:04
Цитата Сообщение от Troll_Face Посмотреть сообщение
ах да, про многозадачность: теперь ее вроде как аппаратно не реализуют
- простор для 0day... Очень не люблю Intel... Хотя... MSC-51 для меня удобнее, чем PIC...
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
21.07.2013, 19:08
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
простор для 0day...
не понял суть написанного...
0
Модератор
10352 / 5638 / 3395
Регистрация: 17.08.2012
Сообщений: 17,205
21.07.2013, 19:23
0day (англ. zero day) — термин, обозначающий вредоносные программы или уязвимости, против которых еще не разработаны защитные механизмы. А если многозадачность организуется не аппаратно, а программно, найдутся кулхацкеры, которые будут использовать этот механизм создания многозадачности, тем более, программные реализации несут в себе человеческий фактор... Простор для 0day...
1
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
21.07.2013, 20:16
не поленился. открыл Руслана Облязова
Доступ к 64-битным регистрам и новым регистрам осуществляется через специальный REX-префикс. Таким образом, все опкоды команд, которые работают с 64-битными регистрами, увеличиваются в размере как минимум на 1 байт, и возникает серьёзная проблема оптимизации кода. Поэтому рекомендуется везде, где возможно, использовать 32-битные регистры.
Команды PUSHAD/POPAD по непонятным причинам теперь уже не поддерживаются. Команды PUSH и POP могут работать только с 64- и 16-битными операндами; при помещении в стек 16-битный операнд не расширяется до 64 бит, но при этом указатель на верхушку стека перестаёт быть выровненным на 8 байт.
не поддерживаются команды дальних прыжков. теперь нужно писать в хекс-кодах, чтобы осуществить дальний прыжок
Assembler
1
2
3
4
5
jump_value: 
dq jump_offset 
dw jump_selektor
..........
jmp tbyte [jump_value]
нельзя использовать команду следующего формата: mov [address], value64. 64-битное значение можно заносить только в регистр (в то время как в защищённом режиме можно было использовать rrov [address], value32). Если необходимо занести 64-битное значение в ячейку памяти, надо начала занести его в регистр, а потом из регистра - в память; таким образом, ряд действий, которые в защищённом режиме выполнялись за один шаг, теперь будет выполняться в два шага.
Значительные изменения в long mode претерпела сегментация. Сегментация в long mode поддерживается только частично: все сегменты начинаются с адреса Oh и покрывают всё 64-битное адресное пространство, проверка лимита не производится. В дескрипторах данных игнорируются почти все поля, в дескрипторе кода игнорируется большинство полей. Также в long mode механизм многозадачности не поддерживается аппаратно - его надо реализовывать программно
Полный 30h, что скажешь?

Добавлено через 1 минуту
как я уже писал плюса только два: 64 битные числа и неограниченное пространство памяти.

Добавлено через 8 минут
дескриптор сегмента занимает 8 байт. реально из него используется только 13 бит(!). совместимость.

Добавлено через 4 минуты
Оо, еще один идиотизм вычитал: по идее установить грацу сегмента в лонг моде нельзя. но для регистров FS и GS можно. И зачем они там нужны?

Добавлено через 8 минут
все драйверы в вин64 должны быть 64 битными. собственно переписывать все равно придется. совместимости нету, да еще и вызов процедур изговняли.
0
Эксперт быдлокодинга
 Аватар для Полный 30h
2094 / 528 / 70
Регистрация: 04.11.2010
Сообщений: 1,314
21.07.2013, 20:22
Цитата Сообщение от Troll_Face Посмотреть сообщение
видать ты поверхностно смотришь на сию прелесть.
как и большинство людей смотрю на вещи с высоты своих знаний. В ассемблере эти знания не глубоки, в архитектуре процессора ещё мельче. Однако успел попробовать как 32 разряда так и 64. Какой-то пропасти между ними не заметил

появилась еще куча регистров. это все хорошо. а только на кой?
Стало необязательно перед каждой API функцией распихивать регистры по стекам, а после оной выпихивать их обратно.

мало того, что из памяти в память нельзя байты перебрасывать
даже странно от тебя такое слышать... память это отдельно, процессор это отдельно. Если представить что две ячейки памяти это две площадки на одном складе, а процессор это погрузчик, то твоё возмущение сводится к тому что нельзя переложить груз с одной площадки на другую без посредника погрузчика. Думаю что у тебя есть примеры архитектур, где такие команды возможны. Однако подозреваю, что в той или иной форме процессор в этом всё же участвует, ну или возлагает эти функции на какие то схемы, что само по себе подразумевает его участие.
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
А если многозадачность организуется не аппаратно, а программно, найдутся кулхацкеры, которые будут использовать этот механизм создания многозадачности, тем более, программные реализации несут в себе человеческий фактор...
Если смотреть на вещи с точки зрения уязвимости, то любая современная ось несёт в себе огромную дань защите от дурака и злонамеренных действий. Я бы даже сказал это её основное предназначение. Ведь если припасть к истокам камнестроения процессор считался инструментом человека им владеющим, а не игрушкой для обывателя. И проблема безопасности вылезла как раз таки из поменявшейся концепции его использования, а не потому что его недодумали. Ну в качестве аналогии это как если бы автомат калашникова из оружия превратили бы в предмет обихода, типа дырки делать в стенах, по банкам пулять, собак отпугивать. И из рук профи раздали его по школам и садам, при этом нарастив мощность и скорострельность, поставив оптический прицел для слабовидящих, сошки для слабодержащих, и т.д. А потом начались бы обсуждения по поводу того какие конструкторы автомата дураки, мол безопасность у него нулячая.
1
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
21.07.2013, 21:48
Цитата Сообщение от Полный 30h Посмотреть сообщение
Стало необязательно перед каждой API функцией распихивать регистры по стекам, а после оной выпихивать их обратно.
это не из-за процессора, а из-за винды. зато юзать фасткалл очень "удобно". честно говоря мне проще юзать stdcall. помнить, что первые 4 (или сколько там) параметра нужно пихать в регистры, а другие нужно помещать в стек в обратном порядке, да еще и вроде бы вычитать из него 4*8, если не ошибаюсь, байт. на кой?
Цитата Сообщение от Полный 30h Посмотреть сообщение
память это отдельно, процессор это отдельно
скажи это команде
Assembler
1
push dword [ds:memory]
Цитата Сообщение от Полный 30h Посмотреть сообщение
Если представить что две ячейки памяти это две площадки на одном складе, а процессор это погрузчик, то твоё возмущение сводится к тому что нельзя переложить груз с одной площадки на другую без посредника погрузчика
см. команду выше
Цитата Сообщение от Полный 30h Посмотреть сообщение
Думаю что у тебя есть примеры архитектур, где такие команды возможны
см. команду выше и еще я слышал, что на некоторых процах такое возможно
Цитата Сообщение от Полный 30h Посмотреть сообщение
Однако подозреваю, что в той или иной форме процессор в этом всё же участвует, ну или возлагает эти функции на какие то схемы, что само по себе подразумевает его участие.
да даже если и так, все равно, думаю, что разработчики бы сделали эту команду более быстрой и менее затратной с точки зрения тактов, нежели пересылка из памяти в регистр\из регистра в память.
0
Модератор
10352 / 5638 / 3395
Регистрация: 17.08.2012
Сообщений: 17,205
21.07.2013, 21:50
Цитата Сообщение от Полный 30h Посмотреть сообщение
память это отдельно, процессор это отдельно.
Цитата Сообщение от Полный 30h Посмотреть сообщение
Думаю что у тебя есть примеры архитектур, где такие команды возможны.
Память и процессор - не отдельно. Они вместе в составе компьютера. И пересылка из памяти в память - весьма частая операция. И в большинстве нормальных процессоров такая пересылка есть. Пример пересылки из памяти в память:
Pascal
1
a := b;
Полный 30h, пример на ассемблере PDP-11:
Assembler
1
mov (R1), (R2)
- пересылка слова из памяти по адресу из регистра R1 в память по адресу из регистра R2. Очень гибкий ассемблер. Ещё пример:
Assembler
1
mov +(PC), +(PC)
- это вообще пересылка из непосредственного операнда в непосредственный операнд! А это
Assembler
1
mov R1, PC
вообще jmp R1 (регистр R1 копируется в счётчик комманд). X86 отдыхает. Any questions?
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
21.07.2013, 21:53
Цитата Сообщение от Troll_Face Посмотреть сообщение
честно говоря мне проще юзать stdcall. помнить, что первые 4 (или сколько там) параметра нужно пихать в регистры, а другие нужно помещать в стек в обратном порядке, да еще и вроде бы вычитать из него 4*8, если не ошибаюсь, байт
по поводу "можно использовать invoke и забыть об способе передачи параметров" скажу так: фасмовыми макросами я не пользуюсь. да и масмовыми в последнее время тоже только руки, только хардкор
0
Модератор
10352 / 5638 / 3395
Регистрация: 17.08.2012
Сообщений: 17,205
21.07.2013, 21:57
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Assembler
1
mov +(PC), +(PC)
блин, старею... Так правильно.
Assembler
1
mov @PC+, @PC+
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.07.2013, 21:57
Помогаю со студенческими работами здесь

Как установить win 7 на новый биус с процессор I7 7700HQ
Добрый день ребята, кто знает как поставить вин 7 на новый биус с процессором I7 7700HQ купил ноут HP там стояла 10ка, решил переустановить...

Сколько разрядную систему Win(32\64 бит) понимает мой процессор?
Здравствуйте господа форумчане! Помогите плиз разобраться. Замучился гуглить. Собственно вопрос: поддерживает ли мой процессор 64-ёх...

Вызываю dll (написанную на vc++2008) из Fasm. Через 40 секунд вылет из программы.Без вызова dll из Fasm программа не вылетает.
Программа на vc++2008: #include "MathFuncsDll.h" #include <stdexcept> using namespace std; namespace MathFuncs { ...

После обновления Win 8.1 до Win 10, можно ли поставить старую Win 8.1 на другой ПК ?
Имеется лицензия Windows 8.1. которую обновил до Windows 10, можно ли теперь поставить струю Windows 8.1. на другой компьютер ? Если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru