Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пн сен 25, 2017 11:30 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 144 сообщения ]  На страницу Пред. 14 5 6 7 810 След.
Автор Сообщение
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Пт авг 29, 2014 3:12 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1599
68.16 - это нормальный способ загрузки в том числе и PE-драйверов, но имя драйвера должно заканчиваться нулевым символом. В 68.21 нужно указывать полный путь и дополнительно указывать командную строку.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вт окт 07, 2014 4:19 am 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1073
Имеется структура
Код:
notify_struct:
        dd 7
        dd 0
  .msg  dd 0
        dd 0
        dd 0
        db '/sys/@notify', 0

И переменная
Код:
path:
   rb 4096

Как поместить n-й байт в notify_struct.msg?
Пробовал так:
Код:
    mov al, [path]
    mov byte[notify_struct.msg], al

Но в итоге в Notify выводится мусор.

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вт окт 07, 2014 7:43 am 
Не в сети
Аватара пользователя

Зарегистрирован: Сб окт 05, 2013 9:32 pm
Сообщения: 385
notify_struct.msg - всего лишь ссылка. Варианта два:
а) если path уже не нужен, то
Код:
mov eax, path + 1
add eax, [n]
mov [eax], byte 0
mov [notify_struct.msg], path

P.S.: если будет ошибка на строчке path + 1, то помести в eax сначала path, а потом inc eax
б) создать еще один буфер, в него поместить n символов в цикле. Потом mov [notify_struct.msg], buffer
Код:
mov eax, buffer
mov ebx, path
mov ecx, [n]
@@:
mov dl, byte [ebx]
mov byte [eax], dl
inc eax
inc ebx
loop @b

mov [notify.msg], buffer

;-----
buffer rd 4096


А можно просто пересохранить байт [path + n + 1], потом сделать как в первом варианте, потом вернуть тот байт


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вт окт 07, 2014 11:48 am 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1073
Как-то это полегче делалось. С месяц назад я это уже делал, но исходники были утеряны. А вот теперь немогу понять как делал.

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вт окт 07, 2014 1:01 pm 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Пн окт 19, 2009 10:58 am
Сообщения: 329
I'm not sure I understand you correctly, but here is my version:
Код:
; eax = n
movzx eax, byte[path + eax]
mov [notify_struct.msg], eax


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вт окт 07, 2014 2:40 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Сб окт 05, 2013 9:32 pm
Сообщения: 385
Моя ошибка, прочитал n байт, а не n-ый. Тогда dunkaist прав. Можно еще так
Код:
; eax = n
mov al, byte[path + eax]
mov byte[notify_struct.msg], al

Но при вызове нужно передавать не байт, а адрес, т.е. все ровно нужно создать где-то строку, в нее поместить нужный байт, затем 0, а потом mov [notify.msg], buffer, где buffer, строка, которую нужно вывести


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вт окт 07, 2014 7:54 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1073
Снова я с тупыми вопросами. Не могу разобраться с организацией кода для удаления tmp-дисков. Проблема скорее всего с неправильным заполнением структуры отдаваемой ф68.17. Буду рад если кто укажет на ошибки, а то у меня уже мозг кипит.


Вложения:
vdm.7z [1.04 КБ]
41 скачивание

_________________
я лишь учусь
Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вт окт 07, 2014 9:58 pm 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Пн окт 19, 2009 10:58 am
Сообщения: 329
Hint: 'vdm d' deletes /tmp0.


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Ср окт 15, 2014 10:09 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1073
И снова я с подобным вопросом. На этот раз немогу организовать создание tmp-диска, и прошу снова указать в каком направлении копать.


Вложения:
vdm.7z [1.17 КБ]
46 скачиваний

_________________
я лишь учусь
Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Чт окт 16, 2014 9:02 am 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1073
Проблема локализирована. Код снова работает, но неожиданным образом.

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Ср окт 22, 2014 8:20 am 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1073
Помогите разобраться, почему edit_box ведет себя не так как надо. На события мыши он вроде как вообще не реагирует, покрайней мере фокус не снимается. А при событии нажатия клавиатуры он и воввсе ведет себя непонятным образом.


Вложения:
vdm.7z [2.03 КБ]
42 скачивания

_________________
я лишь учусь
Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Ср окт 22, 2014 8:46 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
punk_joker писал(а):
На события мыши он вроде как вообще не реагирует, покрайней мере фокус не снимается.

Спойлер: Показать
Желательно:
Код:
mcall 40,0x27

А также в mouse_dd
Код:
ed_focus=                     10b   ;фокус приложения

Я в opendialog сделал:
Код:
   mov   edi,edit1
   or   [edi+44],dword ed_focus

И да, я знаю, что использовать "магические" числа неправильный путь, но так вышло.
Можно сразу сделать:
Код:
   or   [mouse_dd],dword ed_focus

punk_joker писал(а):
А при событии нажатия клавиатуры он и воввсе ведет себя непонятным образом.

Код:
mcall 2

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Сб окт 25, 2014 8:09 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 742
Есть вопрос по FPU. Пишу функцию которая множит матрицу m(4*4) на вектор v(4). Пока что для упрощения беру единичную матрицу, т. е. после умножения я должен получить исходный вектор. Проблема в том что первое число получаемого вектора равно 1.0, другие числа совпадают. Вычисляю числа вектора в цикле потому для всех чисел по идее используются одни и те же формулы. Потому-то и не могу понять почему именно первое число делается единицей :?
Сама функция для тех кто не хочет смотреть весь код.
Код:
align 4
proc func_mv, m:dword, v:dword
pushad
   mov ebx,[m]
   mov edx,[v]
   mov ecx,4
   .cycle_0:
      finit
      fld dword[edx]
      fld dword[edx+4]
      fld dword[edx+8]

      fld dword[ebx]      ;st0 = m[0]
      fmul st0,st3      ;st0 *= v.coord.X
      fld dword[ebx+4]   ;st0 = m[1]
      fmul st0,st3      ;st0 *= v.coord.Y
      fld dword[ebx+8]   ;st0 = m[2]
      fmul st0,st3      ;st0 *= v.coord.Z
      fadd dword[ebx+12] ;st0 += m[3]
      fadd st0,st1      ;st0 += v.coord.Z * m[2]
      fadd st0,st2      ;st0 += v.coord.Y * m[1]
      fstp dword[edx]    ;v.coord.X = v.coord.X * m[0] + v.coord.Y * m[1] + v.coord.Z * m[2] + m[3]
      add ebx,16 ;следущая строка матрицы
      add esi,4  ;следущая координата вектора

      loop .cycle_0
   stdcall print_matrix,[v],1
popad
   ret
endp

.........

align 4
matr1 dd 1.0,0.0,0.0,0.0
   dd 0.0,1.0,0.0,0.0
   dd 0.0,0.0,1.0,0.0
   dd 0.0,0.0,0.0,1.0

vect1 dd 0.5,0.7,0.9,1.1


Вложения:
Комментарий к файлу: программа множит матрицу и вектор, на доску отладки пишет результат
matr_asm.zip [14.01 КБ]
38 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Сб окт 25, 2014 8:57 pm 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Пн окт 19, 2009 10:58 am
Сообщения: 329
У тебя ведь даже не планировалось умножение матрицы на вектор:
Код:
fld dword[edx]
fld dword[edx+4]
fld dword[edx+8]
...
fstp dword[edx]    ; v.coord.X = v.coord.X * m[0] + v.coord.Y * m[1] + v.coord.Z * m[2] + m[3]

Вот так выводит 0.5 0.7 0.9 1.1:
Код:
proc func_mv, m:dword, v:dword
pushad
        mov ebx,[m]
        mov edx,[v]
        mov esi,edx
        mov ecx,4
        .cycle_0:
                finit
                fld dword[edx]
                fld dword[edx+4]
                fld dword[edx+8]
                fld dword[edx+12]
;fwait
                fld dword[ebx]     ;st0 = m[0]
                fmul st0,st4       ;st0 *= v.coord.X
                fld dword[ebx+4]   ;st0 = m[1]
                fmul st0,st4       ;st0 *= v.coord.Y
                fld dword[ebx+8]   ;st0 = m[2]
                fmul st0,st4       ;st0 *= v.coord.Z
                fld dword[ebx+12]
                fmul st0, st4

                fadd st0,st1       ;st0 += v.coord.Z * m[2]
                fadd st0,st2       ;st0 += v.coord.Y * m[1]
                fadd st0,st3
                fstp dword[esi]    ;v.coord.X = v.coord.X * m[0] + v.coord.Y * m[1] + v.coord.Z * m[2] + m[3]
;               fincstp
;               fincstp
;fwait
                add ebx,16
                add esi,4
;fwait
                loop .cycle_0
        stdcall print_matrix,[v],1
popad
        ret
endp



Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Сб окт 25, 2014 9:58 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 742
Спасибо. Кажется понял я пропустил 4-ю координату, и забыл сделать сдвиг по вектору при выводе результата, потому последняя единица попадала в начало вектора. Остальные координаты не менялись, а я считал что они пересчитанные.
Уже много раз менял этот код в ходе экспериментов и много чего уже сделанного правильно выкинул из него. В начале вообще планировал загрузку вектора вынести перед циклом, чтобы не грузить его 4 раза, и по идее он будет меняться с каждым циклом, так что доработка еще будет нужна.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 144 сообщения ]  На страницу Пред. 14 5 6 7 810 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB