Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Assembler

Автор: Abs62
Дата сообщения: 16.01.2012 21:45
cp58

Цитата:
В операции mov eax, 0 в любом случае идет чтение из памяти операнда 0(+такая операция занимает в памяти 5 байт), xor eax, eax занимает 2 байта, а так же не читает из памяти операндов, что повышает производительность.

Отнюдь. Никаких пяти байт в памяти не занимается. Считывается из памяти трёхбайтовая команда, в ней два байта из трёх занимает этот самый 0. В случае же xor cx, cx из той же памяти считывается двухбайтовая команда. И никаких отдельных чтений из какой-то другой памяти.
Автор: cp58
Дата сообщения: 16.01.2012 22:15
Abs62

Цитата:
Отнюдь. Никаких пяти байт в памяти не занимается. Считывается из памяти трёхбайтовая команда, в ней два байта из трёх занимает этот самый 0. В случае же xor cx, cx из той же памяти считывается двухбайтовая команда. И никаких отдельных чтений из какой-то другой памяти.

При использовании 32 битных регистров, все же 5, т.к. компилятору важно заполнить весь регистр нулями. а значит ни о каких меньшних значениях, чем 32 бита не может и идти и речи.
Если мы говорим о 16 битных регистрах в режиме защищенном, то 4 байта(доп. код 0x66), а не 3.

А теперь о смысле слов "считывается из памяти", да mov eax, 0 относится к типу операций чтения immediate данных(то есть констант), но в памяти все же хранится число(константа), поэтому по факту все же чтение идет.
Автор: Abs62
Дата сообщения: 16.01.2012 22:28
cp58

Цитата:
При использовании 32 битных регистров, все же 5, т.к. компилятору важно заполнить весь регистр нулями. а значит ни о каких меньшних значениях, чем 32 бита не может и идти и речи.

Команда mov cx,0 (с которой и начался флуд) явно указывает на использование 16-разрядного регистра. И я говорю, естественно, о реальном режиме, так как никаких оговорок о защишённом изначально не было.

Цитата:
А теперь о смысле слов "считывается из памяти", да mov eax, 0 относится к типу операций чтения immediate данных(то есть констант), но в памяти все же хранится число(константа), поэтому по факту все же чтение идет.

Конечно. Чтение команды, но не чтение каких-то дополнительных данных. Как и чтение любой другой команды, есть в ней константы или нет.
Автор: cp58
Дата сообщения: 16.01.2012 22:47
Abs62

Цитата:
И я говорю, естественно, о реальном режиме, так как никаких оговорок о защишённом изначально не было.

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


Цитата:
Конечно. Чтение команды, но не чтение каких-то дополнительных данных. Как и чтение любой другой команды, есть в ней константы или нет.

Я не говорил о дополнительном запросе к чтению из памяти, я говорил о факте пересылке константы из памяти в регистр, даже при том, что операция выполняется тогда, когда читается команда.

Добавлено:

Цитата:
(с которой и начался флуд)

Можете написать в личку, я донесу мысль более подробно.
Автор: bomzzz
Дата сообщения: 16.01.2012 22:50
как разница какой режим процессора?

Цитата:

.386p
CSEG segment use16
assume cs:cseg, ds:cseg, ss:cseg, es:cseg
    org    100h
start:
Автор: cp58
Дата сообщения: 16.01.2012 23:11

Цитата:
как разница какой режим процессора?

Такая. что в 16-битном режиме опкод команды mov ebx, eax будет 0x6689c3, а в 32-битном 0x89c3; и с точностью, да наоборот, в 32-битном mov bx, ax опкод станет 0x6689c3, а в 16-битном 0x89c3. Код генерируется под конкретно заданную платформу, поэтому это никого не заботит.

Добавлено:
Да и указал я это для различий в размере (3 и 4 байта соответственно).
Автор: bomzzz
Дата сообщения: 17.01.2012 00:52
но это не имеет отношения к реальный\защищенный
Автор: cp58
Дата сообщения: 17.01.2012 01:42
bomzzz

Цитата:
но это не имеет отношения к реальный\защищенный

Перейду на иронию, так как в разделе "Assembler" такое говорить по иному никак.

Открываю америку: Real Mode 16-битный, для доступа к регистрам eax, ebx... добавляется префикс 0x66 к любой инструкции доступа к этим регистрам, да есть и 16-битный Protected Mode, но как часто вы его используете?
Автор: bomzzz
Дата сообщения: 17.01.2012 01:59
я постоянно. и 32 битные регистры в реальном и 16 приложения в защищенном.
Автор: bomzzz
Дата сообщения: 17.01.2012 04:34
под виндой чета не получается смешанный код использовать, чета не соображу - тут и сегментов то нет. 16 битные в V-Mode вообще то должны. но это не значит что в защищенном режиме нельзя смешанный код использовать вообще

Добавлено:
вернее получается но только в V-Mode.
Автор: A1exSun
Дата сообщения: 26.01.2012 17:37
Посоветуйте в чем писать на ассемблере под MS-DOS? Нужен и редактор, и компилятор...
Автор: akaGM
Дата сообщения: 26.01.2012 17:53
tasm
turbo debugger -- отладчик
редактора отдельного нет, бери любой, но лучше ТС...
Автор: A1exSun
Дата сообщения: 26.01.2012 18:02
akaGM
TC можно подружить с TASM? BC значит тоже?

TASM: http://old-dos.ru/files/file_683.html он?
Автор: akaGM
Дата сообщения: 26.01.2012 18:06
в каком смысле?
в ВС встроенный асм по имени BASM и в поставке tasm.exe есть...

-----
он
Автор: A1exSun
Дата сообщения: 26.01.2012 18:12
akaGM

Цитата:
редактора отдельного нет, бери любой, но лучше ТС...

Я об этом. Как их подружить? Чтоб с TASM через командную строку не работать...
Автор: akaGM
Дата сообщения: 26.01.2012 18:16
досовский multiedit настраивать...
Автор: A1exSun
Дата сообщения: 26.01.2012 19:16
akaGM
Не ставится он в виртуалку - error 200
Автор: cp58
Дата сообщения: 27.01.2012 00:58
A1exSun
Поставьте Volkov Commander, правка файла(встроенный редактор) + TurboC 2.0 можно с официального сайта Embarcadero утянуть.
Автор: akaGM
Дата сообщения: 27.01.2012 01:27
ТС у него есть, ему IDE под tasm подавай...

хотя были какие-то самодельные интеграторы...
но всё равно, имхо, "интеграторнее" малтиэдита под 6.22 не найти...

A1exSun, сидел бы ты под ТС и не парился...
Автор: cp58
Дата сообщения: 27.01.2012 01:34
IDE для таких мелких задач по-моему вобще не нужна, но каждому свое(как я уже говорил в VC встроенный редактор), впрочем, можно поставить vim, если так хочется.
Автор: akaGM
Дата сообщения: 27.01.2012 01:37
cp58

Цитата:
как я уже говорил в VC встроенный редактор
F4 -- младенец против ТС-редактора :)

+

ЕМНИС "-B" опция вызывает tasm напрямую
(вот есть ли это в IDE, я уже не помню)
или это вообще только с ВС началось, не помню уже...

-----
интересно, если в .c писать на чистом асме
а первой строчкой написать
#pragma option push -В

что будет?
Автор: zveroyacher
Дата сообщения: 27.01.2012 12:59

Цитата:
IDE

http://oby.ro/rad_asm/
Автор: akaGM
Дата сообщения: 27.01.2012 13:24
ему ДОС-версия нужна...
Автор: zveroyacher
Дата сообщения: 27.01.2012 14:13
edit.com
Автор: akaGM
Дата сообщения: 27.01.2012 14:43
edlin.com
или ваще
copy con: file.asm
Автор: Abs62
Дата сообщения: 27.01.2012 15:13
Да чего мелочиться - copy con file.exe
Автор: akaGM
Дата сообщения: 27.01.2012 15:49
copy con file.exe
MZ дальше не помню...
^Z

[off]
Abs62
ты зачем усы сбрил?пардон, надеюсь, не то моё сообщение убило твою подпись?
[/off]
Автор: Abs62
Дата сообщения: 27.01.2012 17:14
akaGM

Цитата:
copy con file.exe
MZ дальше не помню...

Лучше пиши com.

Код: chcp 1251
copy con test.com
Н ^Z ;Н - русская и пробел
Автор: akaGM
Дата сообщения: 27.01.2012 17:39
Abs62
com'овский первый 233-ий (такая тета), org 100 что ли означает?, но это не русская Н...
Автор: Abs62
Дата сообщения: 27.01.2012 17:55
akaGM
Это у тебя не тот com.
233 (E9h) - это jmp far.
А ты вот это откомпилируй:

Код: .model tiny
.code
org 100h
start:
int 20h
end start

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

Предыдущая тема: .NET GUI компоненты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.