FreeBSD amd64

Тема в разделе "WASM.UNIX", создана пользователем NoResponse, 2 сен 2006.

  1. NoResponse

    NoResponse New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2005
    Сообщения:
    89
    кто нить ткните носом в инфу или пните в нужном направлении
    и собстна вопрос... сис вызовы на i386 вызывались условно как
    Код (Text):
    1. push    a
    2. push    c
    3. push    d
    4. mov     eax, 1
    5. call    0007:00000000
    в 64 битном режиме нет дальних jmp и call, так как же теперь вызывать ?
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    NoResponse
    НА freebsd.org можно подписаться на рассылки, подпишись на рассылку! Плюс на forum.sysadmins.ru куча никсоидов там могут подсказать, а лучше свяжись с techix/frenzy он многих знает подскажет че к чему
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    NoResponse
    А int $0x80 разве отменили?
     
  4. NoResponse

    NoResponse New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2005
    Сообщения:
    89
    Quantum его не отменили, а скорее забили на sysV
    ответ на forum.sysadmins.ru (спасибо - EvilsInterrupt), точнее там ссылка на хендбук

    PS - вопрос остается открытым, есть ли в 64 замена call 7:0 (кроме int $0x80)
     
  5. NoResponse

    NoResponse New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2005
    Сообщения:
    89
    ну чтож... после долгих и мучительных поисков и тестов имеем следущее

    как правильно заметил pernatiy в фряхе теперь лучше не использовать (call 0007:00000000), да оно и к лучшему, а то много места занимало, вместо этого исползуйте (int 80h) или (syscall)

    терерь про параметры. в 32 битах как передавались они через стек, так и передаются, а вот в 64 битах теперь вот так (помогли примеры из fasm'a)

    Код (Text):
    1. ; parameters order:
    2. ; r9    ; 6th param
    3. ; r8    ; 5th param
    4. ; r10   ; 4th param
    5. ; rdx   ; 3rd param
    6. ; rsi   ; 2nd param
    7. ; rdi   ; 1st param
    8. ; eax   ; syscall_number
    9. ; syscall
    ах да, это приминимо как к фре так и к лину
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Странно. То есть, они изменили свой старый порядок и к тому же забили на ABI от AMD64?