чтение из файла

Тема в разделе "WASM.UNIX", создана пользователем ragim, 3 ноя 2010.

  1. ragim

    ragim New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2010
    Сообщения:
    47
    7mm огромное спасибо за код!!
    но я не понял ведь file descriptor он word(судя по
    http://www.lxhp.in-berlin.de/lhpsysc1.html#read
    в описании open
    int fd (16bit filedescriptor)
    )
     
  2. ragim

    ragim New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2010
    Сообщения:
    47
    7mm огромное спасибо за код!!
    но я не понял ведь file descriptor он word(судя по
    http://www.lxhp.in-berlin.de/lhpsysc1.html#read
    в описании open
    int fd (16bit filedescriptor)
    )и спасибо за errno
     
  3. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Sasha7b9
    man'ы. БОльшая часть этих функций описана в man'ах. Правда там, описаны всё же не сами сисколлы, а libc'овые обёртки поверх них, предназначенные для C-программ. Но по большому счёту, эти обёртки отличаются от сисколлов лишь конвенцией вызова: способами передачи управления, передачи аргументов и возврата результатов. Конвенцию же вызова int 0x80 можно найти в книжках о ядре linux. Я так на память не скажу, но гугл знает. Если вам не найти, я могу спросить у гугла.
    И почитайте обязательно: man 2 syscalls
     
  4. ragim

    ragim New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2010
    Сообщения:
    47
    я кажется выяснил ошибка: bad file number
    при чтении
     
  5. ragim

    ragim New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2010
    Сообщения:
    47
    всё сам разобрался: неправильно принимал параметры из стека в read надо:
    Код (Text):
    1. xor ebx,ebx
    2. mov bx, [b]word[/b] [esp+4]
     
  6. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Это глупость, лучше заносите в стек DWORD, а не читайте WORD.
     
  7. sergey02008

    sergey02008 New Member

    Публикаций:
    0
    Регистрация:
    3 июн 2011
    Сообщения:
    1
    Посмотри номер функции в файле unistd_32.h. номер системнои функции в регистр eax , параметры в ebx, ecx, edx, esi, edi. в ebx 241h это типа WR_ONLY|O_CREATE|TRUNC, В ecx 0666q это права доступа, затем int 80h после вызова в eax содержится файловый дескриптор, осталось сделать только mov [fd],eax перед int 80h параметры ложаться с лева на право man 2 open
     
  8. Phuntik

    Phuntik New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2008
    Сообщения:
    318
    sergey02008

    push path
    call open
    mov [fd], ax

    open:
    mov eax, 5
    mov ecx, 0
    mov edx, 0
    mov ebx, [esp+4] ;ptr 2 path
    ret

    Так где здесь собственно вызов?
    Нет, я безнадёжен
     
  9. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Археологи атакуют.

    Но прежде чем атаковать, вы бы хотя тред прочитали-ли бы, а? Ну просто в качестве символического жеста уважения к окружающим.
     
  10. Sasha7b9

    Sasha7b9 New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2010
    Сообщения:
    105
    r90
    Ого. Это где же тут кто проявил неуважение к окружающим? (Phuntik, кстати, тоже я).
     
  11. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Sasha7b9
    Методы решения проблем и ошибки о которых вы говорите уже обсосаны со всех сторон в предыдущем обсуждении. Номера системных вызовов ни разу не были проблемой, проблему вызывали другие константы: возвращаемые сисколлами коды ошибок. А отсутствие int $0x80/sysenter было первым, на что обратили внимание автора топика.
    Так что всё, написанное вами -- не добавляет ничего нового к обсуждению, лишь захламляет форум. И по-моему у этого есть одно название -- неуважение к окружающим. Кроме того, есть ещё такое наблюдение: до ваших комментов было 25 ответов. Почему вы не читая этих ответов априори считаете что окружающие тупы настолько что не в состоянии решить проблему в 25 комментов?
    Ну и наконец последнее, почему вы, вместо того, чтобы подумать самостоятельно о том, что такое неуважение к окружающим, вместо того, чтобы прочитать предыдущее обсуждение самостоятельно и самостоятельно найти вопросы на интересующие вас ответы, почему вместо всего этого вы продолжаете провоцировать флуд и оффтоп, почему вы продолжаете провоцировать дальнейшее захламление форума?
     
  12. Sasha7b9

    Sasha7b9 New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2010
    Сообщения:
    105
    r90
    У меня один ответ на эту тЕТРАду.
    Вы дурак или как?

    В сотый раз повторю - придурок, где в вышеозначенном отрывке вызов функции чтения?
    90 - это размер твоего шапочного мозоля, я у угадал?
     
  13. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Sasha7b9
    Конечно дурак. Не дурак на этом форуме лишь один -- Вы. Причём настолько не дурак, что Вы точно знаете, когда надо переходить от разговора к оскорблениям. Вот я, скажем, не знаю, и из-за этого вынужден обходится без оскорблений. Как Вы считаете, сильно ли это ограничивает мои вербальные возможности?
    Не в сотый, но в третий раз, предлагаю Вам перечитать топик. Если Вы считаете что это "многабукф", то я могу изложить вкратце::
    Sasha7b9 (да-да -- это цитата "тоже Вас")
    7mm
    ragim
    ragim
    Последняя фраза была произнесена в ноябре прошлого года. В дальнейшем обсуждение развивалось в сторону обработки ошибок возвращаемых системными вызовами, и кончилось всё тем, что автор топика выяснил что он как-то не так работал со стеком:ragim
    После этого автор здесь не появлялся. Явно проблема была решена. И теперь, я -- дурак и придурок, -- не могу понять, о чём же мы теперь говорим? Не могли бы Вы, как не дурак и не придурок, объяснить мне идиоту, чем же мы здесь занимаемся?
    Вот объясните мне, зачем Sergey02008 начал рассказывать где можно найти номера системных вызовов, если эти номера были известны автору изначально. Объясните мне, зачем Phuntik -- тоже Вы -- пришёл сюда и начал ещё раз объяснять всем, что в первоначальном коде нет инструкции sysenter, если автор уже добавил эту инструкцию везде? Ну Серёжа -- ладно, я могу его понять, он впервые пользуется форумом, и ещё не привык смотреть на даты сообщений, он ещё не привык читать весь топик, прежде чем лезть со своими советами. Это нормально, все мы совершали такие ошибки когда-то. Но поведение не-дурака/не-придурка Phuntik'а загадочно и не поддаётся логическому анализу. Его поведение явно выше любой логики. И именно поэтому я обращаюсь к Вам за помощью: не могли бы Вы объяснить необъяснимое?