imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 17.10.2002, 08:49     # 1
CYD
Banned
 
Аватар для CYD
 
Регистрация: 16.10.2002
Адрес: Прага
Сообщения: 468

CYD Нимб уже пробиваетсяCYD Нимб уже пробивается
АСМ и машинные коды...

Прошу не смеятся уважаемых гуру, мы - ламеры, народ плечистый )

Вот какой вопрос...по какому принципу сделан асм? Тоесть допустим смотришь в отладчике, int 21 = 0CD21 (или что-то вроди того, точно не помню)...если прерывание номер другое, то меняется только цифра в машинном коде...так вот вопрос асм это тот же машинный код, но сделанный под слова или нет?
Мне просто тут друг доказывал, что не может такого быть и асм компилируется по какому-то сложному алгаритму, а не просто "переводится"....

помогите кому не влом...
Спасибо.
CYD вне форума  
Старый 17.10.2002, 13:37     # 2
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Nu, nachnem s togo, chto u kajdogo processora swoi ASM. Wozmem komandu wizowa preriwaniya na 80x86: Int NUMBER. Gde number: nomer preriwaniya. W twoem primere eto 21 w schesnadcaterichnoi. Wot prostoi primer multisegmentnoi ASM progi.

Assume SS: SSeg, DS: DSeg, CS: CSeg
SSeg Segment Stack
SData dw 1024 dup (?)
SSeg EndS

DSeg Segment
SampleData dp 'Pofig'
DSeg EndS

CSeg Segment
Main Proc
Mov Dx, Seg DSeg
Mov Ds, Dx

Mov Ax, 4C00h
Int 21h

Main EndP
CSeg EndS
End Main

W proge est 3 segmenta. Assembler obrabatiwaet segmenti odin za drugim i perewodit komandi w chisla. Estewstwenno proishodit prowerka chto ti pishesh, i.t.d. Naprimer Mov Es, Ds (skopirowat soderjimoe Ds w Es) rabotat na 86 processore ne budet, t.k. takoi instrukcii _normalnij_ CPU ne znaet. Poluchish oshibku. Segment SSeg - eto stack - tuda padaet informaciya o tochkah wozwrata iz procedur i funkcij i chasto stack ispolzyetsya dlya peredachi informacii mejdu procedurami ili w kachestwe wremennogo hranilischa informacii. Wtoroi segment: DSeg - tam hranyatsya wse staticheskie dannie. Tretij: CSeg - tam hranitsya wipolnyaemij kod. Chto eshe delaet Assembler - eto nakoplenie informacii o metkah. Kajdaya procedura, oboznachenie bloka dannih i prosto adresnaya metka - eto imya kotoroe obrabatiwaet linkowschik pri sbore objektnih failow w odno celoe - t.e. wipolnyaemij fail.
helldomain вне форума  
Старый 17.10.2002, 22:18     # 3
Sh
Guest
 
Сообщения: n/a

По поводу сложных алгоритмов - вообще интеловцы постарались в свое время на славу: некоторые операторы могут ассемблироваться аж несколькими вариантами и означать одно и тоже.... + сюда код операции разной длины для разных комманд(и отдельно для AX/AL) + сюда адресации ( на инкрементные они зажались правда, но и обычных в принципе хватает) .....
Вобщем приятное дело... но не для написания дизассемблеров
P.S. Почитай справочники (хорошие)по асму - можно найти и коды операций, и системы адресаций и прочую шнягу... блин на днях видел... понравился... названия не помню... :-(

p.p.s. to Helldomain - слушай транслит - рулит!!!
я наверно раза три перечитывал "schesnadcaterichnoi" пока не понял что ето такое.... :-)
 
Старый 18.10.2002, 00:10     # 4
CYD
Banned
 
Аватар для CYD
 
Регистрация: 16.10.2002
Адрес: Прага
Сообщения: 468

CYD Нимб уже пробиваетсяCYD Нимб уже пробивается
Вот загрузили-то!
Я всего навсего хотел узнать в машинном коде те же команды, что и в асме, только записанные цифрами?
Тоесть если выучить "асм в цифрах" это и будет машинный код?
CYD вне форума  
Старый 18.10.2002, 01:58     # 5
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
CYD: Da.
Sh: Translit wsegda rulil ;-))).
helldomain вне форума  
Старый 28.10.2002, 21:50     # 6
Mickey
Guest
 
Сообщения: n/a

На самом деле надо обратить внимание на слово МАКРО в дополнении с словом ассемблер.
Например,
db 20 dup('?') # или что-то вроде этого
разворачивается ассемблером в 20 вызовов db.

аналогично и многие другие макрофишки. :idea:
 
Старый 28.10.2002, 22:23     # 7
ARTi
Guest
 
Сообщения: n/a

Короче, по жизни асм - словесное выражение машинных кодов. А все остальное - навороты (метки, мат. выражения, макросы), чтобы легче было жить.
Из-за всех этих наворотов и получается, что алгоритм компиляции не такой уж и простой...
 
Старый 28.10.2002, 23:51     # 8
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Izwini, no on prosche, chem dopustim algoritm kompila iz C++.
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 05.11.2002, 08:22     # 9
Panorama
Guest
 
Сообщения: n/a

У комповой молодежи середины 90х была такая забава - писать проги в VC... Нет, это не то о чем вы, наверняка, подумали. VC - это Volkov Commander (там был hex-редактор). Все очень просто - без IDE, компиляторов и линкеров. Просто жмешь Shift-F4 (новый файл) вводишь имя с расш. ".com" и пофигачил.

FA EB FE - Вешает комп (в реальном режиме и под DOS).
E9 FF FF FF FF - Перегружает (тоже только в реальном и, если не ошибаюсь, только для 8086).
B8 01 00 CD 10 B8 01 4C CD 21 - устанавливает режим 40x25... Еще прикольные весчи, вплоть до форматирования винтов (через int 13), бикалок при нажатии клавиш (резидент на int 09) и пр...

Т.е. ASM переводится по командно. А то, что Sh гнал, про буйство опкодов и адресации, так это ясен перец - CISC-архитектура это вам не RISC с 10-30 командами (кот. выполняют тоже, и даже быстрее). И не интеловцы постарались и не в свое время... Это еще до них известно было и еще до сих пор не известно что лучше _для любой_ задачи. CISC'у цисково, RISC'у - рисково, а другу в репу за такие предположения. :)
 
Старый 05.11.2002, 08:54     # 10
denver
::VIP::
 
Аватар для denver
 
Регистрация: 02.12.2001
Адрес: Hohland
Сообщения: 2 260

denver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуру
Цитата:
Как писал Panorama
FA EB FE - Вешает комп (в реальном режиме и под DOS).
E9 FF FF FF FF - Перегружает (тоже только в реальном и, если не ошибаюсь, только для 8086)
Вешать комп это не серьезно, а вот перезагрузку видел я лаконичнее - в 2 байтах (обидно тока не запомнил каких), причем холодная и теплая в зависимости от первого символа.
denver вне форума  
Старый 05.11.2002, 16:34     # 11
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Panorama, ne pomny ya chto-to ni odnogo CISC proca s registrom AX i lo-bit AL (kak Sh pisal) ot nego. Mojet nazowesh?
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 05.11.2002, 21:34     # 12
Panorama
Guest
 
Сообщения: n/a

2helldomain: Нет, с пямятью у тебя все в порядке :) У каждого проца свои имена регистров. Или ты хочешь сказать, что только Intel одна CISC процы делает?

2Denver: :) :) :) А кто говорил, что писание прог в hex-редакторе - это серьёзно? :) For fun. А вот двумя байтами выбирать горячая или холодная перезагрузка нельзя (на стандартном BIOS), так как это определяется содержимым ячейки где-то в 0040:xxxx, а вот адресовать ее одним-двумя байтами тебе не удасться :) Тем более в зависимости от первого символа (там опкод, а их не так много).

Да и какое это теперь имеет значение по прошествии стольких лет? :)
 
Старый 06.11.2002, 04:16     # 13
denver
::VIP::
 
Аватар для denver
 
Регистрация: 02.12.2001
Адрес: Hohland
Сообщения: 2 260

denver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуру
Цитата:
Как писал Panorama
а вот адресовать ее одним-двумя байтами тебе не удасться
Я в асме не силен, но говорю же что видел! Даже пробовал - работало.

Цитата:
Как писал Panorama
Да и какое это теперь имеет значение по прошествии стольких лет?
Мне и сейчас бывает надо перезагрузить комп автоматом по окончании выполнения батничка (например досстарт.бат который у меня файлы реестра реставрирует!)
denver вне форума  
Старый 06.11.2002, 23:07     # 14
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Panorama: konechno, ne tolko Intel, no rech wrode shla o intele - 8086 ya ne mogu nazwat processorom s arhitekturoi CISC - w srawnenii, naprimer, s vektornim blokom processora C90 ili I320 (metafreim IBM).
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 07.11.2002, 01:16     # 15
Panorama
Guest
 
Сообщения: n/a

2helldomain: Хех... Но назвать архитектуру x86 RISC архитектурой, я думаю, ты бы тоже не решился :)

2Denver: Найди. Будет интересно :)... Я вот, например, ядерный взрыв несколько раз видел... и зомбей пачками душим... во сне, правда :) Говорю же, что для переключения cold/hot reboot надо в память писать - ну никак не одним-двумя байтами. Может то, что ты видел эксплуатирует какие-то ошибки (напр. эксепшен кинуть для cold boot'а, но так это под QEmm не будет работать...). Короче, действительно интересно будет взглянуть. Если найдешь - напиши.

И вообще народ, я свой пост сюда сделал вовсе не чтоб показать как я крут в асме (прошло времени-то сколько, да и занимаюсь, к счастью, не им... да и не был никогда :), а чтоб показать, что да, предложения асма четко транслируются в машкод. С этим все согласны? Ну так хренли на меня набросились с IBM'овскими mainframe'мам на перевес :).
 
Старый 07.11.2002, 11:48     # 16
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Hmm...
Nazwat Intel RISC mojno. Nabor instrukcij po srawneniju s temi procami chto ya nazwal... Dostatochno melok i nezameten.
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 07.11.2002, 16:55     # 17
denver
::VIP::
 
Аватар для denver
 
Регистрация: 02.12.2001
Адрес: Hohland
Сообщения: 2 260

denver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуруdenver Гуру
Немного не то, о чем я говорил, но тоже катит:
Пишешь в HEXе: CD 18
Будет холодная перезагузка, работает только в ДОС (оно даже скажет Press a key to reboot). А то о чем я говорил, ваще нифига не спрашивало и сразу перегружало, но кстати под QEMM паххало 100%, даже теплая перехватывалась by QEMM!).
__________________
sapienti sat.
denver вне форума  
Старый 07.11.2002, 19:19     # 18
Panorama
Guest
 
Сообщения: n/a

Э нет, helldomain. Бедный, убогий или ограниченный commandset - это не тоже самое что "сокращенный".

"
Основная идея RISC-архитектуры - это тщательный подбор таких комбинаций кодов операций, которые можно было бы выполнить за один такт тактового генератора. Основной выигрыш от такого подхода - резкое упрощение аппаратной реализации ЦП и возможность значительно повысить его производительность.
" - fiton.ru (навскидку из яндекса).

А вот "add eax, [esi +ebx *2]" ну ни как не назовешь инструкцией RISC процессора.

Тоже самое для MIPS (считаем esi==$a0, ebx==$a1, eax==$v0):

sll $t1, $a1 ,1
add $t1, $t1, $a0
lw $t1, $t1
add $v0, $v0, $t1

Вот это RISC.

А x86 - это CISC 100% и это известный факт.
 
Старый 08.11.2002, 01:07     # 19
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
add eax, [esi +ebx *2] - gi, u menya za 4 takta proletaet.
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 08.11.2002, 03:01     # 20
Panorama
Guest
 
Сообщения: n/a

Да не в тактах дело, а в _упрощении_ аппаратной реализации. Приведенный add - весьма сложная инструкция (взять ebx, масштабировать его, взять esi и прибавить к предыдущему результату, передать результат в блок генерации адреса и тд), однако она поступает на конвеер как единая и конвеер сам решает какому блоку чего поручить, как сериализовать и пр - это не RISC, где по идее это должно уже быть готово - только смотри на опкод и кидай соответствующему блоку без какой-либо предобработки.

Да и с конвеерами...

Да и глупо все это. То, то Intel x86 - CISC, надо бы знать.
 

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 19:23.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.