Eugene
Кстати, у Аблязова вроде более или менее много написано, и про long mode есть.
https://t.me/proasm/40063
Anonymous
Ага спасибо)
Aiwan \ (•◡•) / _bot
Eugene
Anonymous
data db '4231',0x00
использую fasm ругается пишет invalid argument
Anonymous
format PE64 console
use64
include 'C:\fasm\INCLUDE\WIN64A.INC'
section '.data'
data db '4231',0x00
len equ $ - data
Anonymous
кто пользуется fasmом в чем проблема почему ругается
Anonymous
?
електр🟢нік ✙🟠рчбеч ඞ
" вместо ' попробуй
Anonymous
пробовал ругается все равно
Anonymous
он мне пишет наоборот использовать с такими кавычками
Anonymous
я просто новичек в fasm перешел с yasm на fasm
електр🟢нік ✙🟠рчбеч ඞ
флудец какой-то. прочитай мануал по фасму.
Anonymous
fasm со своими директивами и макропроцессором отдельный язык
Anonymous
посмотрел там вот так написано
Anonymous
например string db 'hello world',0x0a,0x0d
vi'talij
vi'talij
section '.reloc' fixups data readable discardable
if $=$$
dd 0,8 ; if there are no fixups, generate dummy entry
end if
Aiwan \ (•◡•) / _bot
Anonymous
нет
Aiwan \ (•◡•) / _bot
с какими флагами секцию '.data' создаешь?
Aiwan \ (•◡•) / _bot
что у тебя там? код, данные?
Aiwan \ (•◡•) / _bot
Anonymous
А :)
Anonymous
Не знал
Anonymous
не подскажите в чем ошибка когда я прыгаю после прыжка jmp far у меня происходит ошибка и процессор перезапускается почему
https://pastebin.com/TyXGgK6F
Anonymous
может быть что то не то в дескрипторах но я проверил еще раз все так как надо :)
Anonymous
https://pastebin.com/3M89356c
Anonymous
это моя невнимательность я там исправил PrintStatus эту чушь
Anonymous
работает)
Anonymous
спасибо какой я растяпа)
Anonymous
нет и дальше снова цп перезапускается когда происходит первая инструкция mov dx,0x0010
Anonymous
рано обрадовался
Dmitrij
@pro.osdev - сюда нужно с такими вопросами (сам ничего подсказать не могу, у меня в этом направлении пауза пока что...)
PS: там на русском можно вопросы задавать...
Ask
Anonymous
потому что я же перевел в protected
Anonymous
а значит можно и 32
s54820
а значит можно и 32
У тебя в дескрипторе в предпоследнем байте D/B не выставлен. Получается 16-битный сегемент.
Anonymous
это в каком
Anonymous
DATA_D ?
s54820
это в каком
И в коде, и в данных. И еще esp указывает в небеса.
Anonymous
00001100b ну 2 бит по индексу это D он стоит в 1 все правильно это и получается 32 бита
Anonymous
две старшие единички
Anonymous
я специально их выделил
Anonymous
CODE_D db 0xff,0xff,0x00,0x00,0x00,10011010b,00001100b,0x00
Anonymous
я немного изменил убрал два не значащих бита
Anonymous
выставлены
Anonymous
всего флагов 4
s54820
Anonymous
и они начинаются с права налево
Anonymous
значит я не правильно дескриптор понял как он устроен
Anonymous
я запутался где лимит
Anonymous
лемит же это 0xff,0xff
s54820
лемит же это 0xff,0xff
Он разбросан по всему дескриптору по кусочкам. Так же как и база. Потому что легаси.
s54820
лемит же это 0xff,0xff
Вон там на картинке указано, какая часть лимита (в битах, считая с нуля справа) куда попадает. Младшие биты в младшие байты дескриптора, старшие в предпоследний байт.
Anonymous
и что дают эти бит лимита
Anonymous
эти 8 бит*
Anonymous
всего же получается 24 бита
s54820
и что дают эти бит лимита
Возможность выставить лимит больше 64 килобайт при убранном G или больше 256 метров при выставленном. Если у нас «классический» плоский режим, нам нужно и G, и старшие биты лимита, чтобы 4 гигабайта сделать.
Anonymous
понятно
Anonymous
получается так тогда
Anonymous
CODE_D db 0xff,0xff,0x00,0x00,0x00,10011010b,0xff,00001100b,0x00 ; code descriptor
Anonymous
я просто хотел вставить 4 бита
Anonymous
но я понимаю что я сделал чушь
Anonymous
а как тогда я просто не понимаю в битах все
Anonymous
Data_D db 0xff,0xff,0x00,0x00,0x00,10010010b,11001111b,0x00
s54820
а как тогда я просто не понимаю в битах все
CODE_D db 0xff,0xff,0x00,0x00,0x00,10011010b,11001111b,0x00 ; code descriptor
Предпоследний байт. 1111 — кусок лимита. Выше флаги. Ну я же писал. И картинка вон она.
Anonymous
готово я просто игнорил эти 4 бита
s54820
Anonymous
а что не так с указателем стека
Anonymous
?
Anonymous
нет я не понял