Page 39 of 77

Re: Помогите новичку

Posted: Thu Aug 23, 2012 8:54 pm
by IgorA
Вопрос по работе с svn. Пробовал сделать ревизию, выдает:
Error Commit falied (details follow):
Error Can't create directory '...2932-1.txt': No
Error space left on device
Что это значит, где-то закончилось место, как его расширить?
Spoiler:
error_svn.PNG
error_svn.PNG (20.85 KiB)
Viewed 5005 times
Раньше такого у меня не было, у кого-либо сейчас ревизии делаются?

Re: Помогите новичку

Posted: Thu Aug 23, 2012 10:13 pm
by XVilka
Не надо ничего расширять, я почистил логи - теперь есть место :)

Re: Помогите новичку

Posted: Fri Aug 31, 2012 10:39 pm
by z525
в файле kernel.asm есть строчка include "lang.inc" однако в папке kernel такого файла нет. Например в исходниках версии 0.7.7.0 всего 2 файла с таким названием (если я не ошибся).
Зачем тогда эта строчка в kernel.asm ?

Re: Помогите новичку

Posted: Fri Aug 31, 2012 11:04 pm
by hidnplayr
z525 wrote:в файле kernel.asm есть строчка include "lang.inc" однако в папке kernel такого файла нет. Например в исходниках версии 0.7.7.0 всего 2 файла с таким названием (если я не ошибся).
Зачем тогда эта строчка в kernel.asm ?
The file lang.inc is generated by the build script build.bat or makefile.
You can create your own file with the text "lang fix ru" or "lang fix en".

Re: Помогите новичку

Posted: Sat Sep 15, 2012 7:58 pm
by Akyltist
Есть lib от masm (coff) в ней есть точка входа. Вопрос такой: "Можно ли её прицепить как то к проекту на фасм или собрать совместно, чтобы потом передать управление на эту точку?"

PS: также есть intel omf obj из которого собрана либа.

Грубо говоря что то вроде такого необходимо:

Code: Select all

  use32
  org	 0x0

  db	 'MENUET01'
  dd	 0x01
  dd	 Start
  dd	 I_END
  dd	 0x1000
  dd	 0x1000
  dd	 0x0
  dd	 0x0

Start:
jmp  EPOINT ; точка куда надо передать управление, которая находится в obj
file   "demo.obj" ; тот самый obj
I_END:
Собственно прилагаю к посту lib и obj (intel omf) , а также obj2 (переконвертированный из intel omf в mscoff)
Точка входа Start$qqrv
При сборке lib использовал следующие параметры:
link.exe -lib /FORCE:UNRESOLVED /fixed /subsystem:native /base:-0x0 /ALIGN:16 /ENTRY:Start$qqrv /nologo demo.obj /out:demo.lib

Re: Помогите новичку

Posted: Mon Sep 17, 2012 12:08 pm
by Akyltist
Еще один вопрос. Функция 70 подфункция 7:
eax = 70 - номер функции
ebx = указатель на информационную структуру
Я описал структуру:

Code: Select all

struct files_information
  number       dw 7 ; +0: dword: 7 = номер подфункции 
  flags        dw 0 ; +4: dword: поле флагов: 
  params       dw 0 ; +8: dword: 0 или указатель на ASCIIZ-строку с параметрами 
  res1         dw 0 ; +12 = +0xC: dword: 0 (зарезервировано) 
  res2         dw 0 ; +16 = +0x10: dword: 0 (зарезервировано) 
  null         db 0 ; +20 = +0x14: db 0 
  string       dd ? ; +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
ends
Объявил данные:

Code: Select all

    fi      files_information
    way     db '/rd/1/calc',0         ; замена на /sys/calc ничего не дала
Вешаю на обработчик нажатия кнопки:

Code: Select all

run:
    mov     eax,way ; получаем указатель на строку
    mov     [fi.string],eax

    mov     eax,4                         ; функция 4: написать текст в окне
    mov     ebx,10*65536 + 70            ; [x начальный] *65536 + [y начальный]
    mov     ecx,0x40000000                ; цвет текста RRGGBB
    mov     edx,[fi.string]               ; указатель на начало текста
    mov     esi,9                         ; длина текста в байтах
    mov     edi,[sc.grab]
    int     0x40

    mov     eax,70
    mov     ebx,[fi]
    int     0x40
    mov     [cel],eax          ; всегда возвращает 2 !!!!!!!!!!!!!!
    call    draw_result         ; вот тут вывожу значение 47 функцией
    ret
;end_run
присвоение пути структуре проходит (судя по выводу 4 функции). Потом вызываю 70 функцию, но еах всегда возвращает 2. Вопрос - где я опять накосячил!!!?

Re: Помогите новичку

Posted: Mon Sep 17, 2012 12:56 pm
by Mario
Akyltist
Пока вижу один множественный косяк.
Общий формат информационной структуры:
+0: dword: номер подфункции
+4: dword: смещение в файле
+8: dword: старший dword смещения (должен быть 0) или поле флагов
+12 = +0xC: dword: размер
+16 = +0x10: dword: указатель на данные
+20 = +0x14: n db: ASCIIZ-строка с именем файла или
+20 = +0x14: db 0
+21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
dword = dd
word = dw
byte = db

Re: Помогите новичку

Posted: Mon Sep 17, 2012 12:59 pm
by Akyltist
Фёдор Михайлович Достоевский по этому поводу уже написал однажды книгу.
Спасибо большое! Пошел править.

Хм не помогло

Re: Помогите новичку

Posted: Mon Sep 17, 2012 2:40 pm
by IgorA
Мне кажется что проблема здесь
Akyltist wrote:mov     ebx,[fi]
в ebx должен быть адрес структуры fi, а судя по коду туда попадает 4-х быйтный dword из fi (т. е. номер подфункции ebx = 7)
Попробуй сделать так:

Code: Select all

mov ebx,fi

Re: Помогите новичку

Posted: Fri Sep 21, 2012 11:17 am
by Akyltist
Можно как то менее затратно узнать PID текущего процесса не прибегая к 9 функции?

Re: Помогите новичку

Posted: Mon Sep 24, 2012 10:35 am
by Serge
Включить TLS. PID хранится по адресу fs:0.

Re: Помогите новичку

Posted: Mon Sep 24, 2012 12:10 pm
by Mario
Serge wrote:Включить TLS. PID хранится по адресу fs:0.
Накладные расходы не нивелируют разницу?

Re: Помогите новичку

Posted: Mon Sep 24, 2012 3:12 pm
by Serge
Mario
Бесплатно ничего не бывает.

Re: Помогите новичку

Posted: Mon Sep 24, 2012 7:01 pm
by Mario
Serge wrote:Mario
Бесплатно ничего не бывает.
Вопрос в актуальности твоего совета относительно заданного вопроса.

Re: Помогите новичку

Posted: Mon Sep 24, 2012 7:48 pm
by Rock_maniak_forever
Кто нибудь знает? Есть ли способ, сделать более быстрый снимок области экрана, чем при использовании ф.35 или ф.36?

Переделываю свой ScrollBar. Добавил в него функцию полупрозрачности. Он у меня очень сильно мерцает, из-за тормазов ф.36 (очень медленно делается снимок). Help me, please! :mrgreen:

Демо файлы со скроллбаром, прикрепил.

Image