Главная

Direct Kernel calls или...

Очень интересуюсь, можно ли в BeOS при программировании на ассемблере использовать прямые вызовы ядра. Это типа как в MS–DOS:

mov ah,4ch
int 21h

(завершение программы)

Или в BeOS есть что–то типа libc?

Re: Direct Kernel calls или...

Да. можно. хотя это несколько не корректно.

список сисколов вроде я не встречал в природе
но его очень просто сделать при помощи
objdump натравленного на libroot.so

кстати libroot.so будет тебе аналогом libc

Re: Direct Kernel calls или...

в довесок забыл добавить, что в BeOS «классический» вариант системных вызовов, т.е. параметры в стеке. (в отличии от линукса который и в регистры их укладывает)

Re: Direct Kernel calls или...

Спасибо за ответы. Попробую разобраться.

Re: Direct Kernel calls или...

А можно составить и выложить здесь в статьях список прерываний в BeOS и параметров к ним?

Re: Direct Kernel calls или...

добавляйте параметры сами

Вектор прерывания 0x25

0x00 _kopen_
0x01 _kclose_
0x02 _kread_
0x03 _kwrite_
0x04 _kioctl_
0x05 _klseek_
0x06 copy_sighandlers
0x07 real_time_clock
0x08 resize_area
0x09 set_real_time_clock
0x0a _kload_add_on_
0x0b _kfcntl_
0x0c _kopendir_
0x0d _kexit_thread_
0x0e snooze
0x0f _kclosedir_
0x10 kill_thread
0x11 resume_thread
0x12 acquire_sem
0x13 _kunload_add_on_
0x14 create_area
0x15 delete_area
0x16 get_image_symbol
0x17 _krewinddir_
0x18 _kshutdown_
0x19 find_area
0x1a rename_thread
0x1b get_nth_image_symbol
0x1c _kreaddir_
0x1d _get_thread_info
0x1e _kmkdir_
0x1f _ksymlink_
0x20 _kset_cpu_state_
0x21 _kget_cpu_state_
0x22 wait_for_thread
0x23 _kreadlink_
0x24 _kset_dprintf_enabled_
0x25 read_config_item
0x26 _krename_
0x27 _kunlink_
0x28 _get_port_info
0x29 has_data
0x2a _get_sem_info
0x2b release_sem
0x2c delete_sem
0x2d _kspawn_thread_
0x2e install_default_debugger
0x2f _kfind_thread_ (вызывается из kfind_thread)
0x30 _krstat_
0x31 _kmount_
0x32 set_sem_owner
0x33 set_port_owner
0x34 load_image
0x35 install_team_debugger
0x36 remove_team_debugger
0x37 suspend_thread
0x38 _debugger
0x39 debug_thread
0x3a kill_team
0x3b _get_team_info
0x3c _get_next_image_info
0x3d _get_image_info
0x3e write_config_item
0x3f _kexit_team_
0x40 _kunmount_
0x41 create_port
0x42 write_port
0x43 read_port
0x44 port_count
0x45 _kfree_memory_
0x46 start_event_log
0x47 stop_event_log
0x48 set_thread_priority
0x49 delete_port
0x4a _kdup2_
0x4b _kwstat_
0x4c read_pci_config
0x4d write_pci_config
0x4e set_area_protection
0x4f clone_area
0x50 get_nth_pci_info
0x51 _get_next_team_info
0x52 _get_next_area_info
0x53 read_port_etc
0x54 _get_area_info
0x55 area_for
0x56 _get_system_info
0x57 _kchdir_
0x58 _kaccess_
0x59 send_data
0x5a receive_data
0x5b release_sem_etc
0x5c get_sem_count
0x5d create_sem
0x5e write_port_etc
0x5f _kstatfs_
0x60 _krmdir_
0x61 is_computer_on
0x62 _kunload_library_
0x63 _kcopy_area_
0x64 _get_next_thread_info
0x65 _get_next_port_info
0x66 _get_next_sem_info
0x67 find_port
0x68 _kdprintf_
0x69 port_buffer_size
0x6a acquire_sem_etc
0x6b port_buffer_size_etc
0x6c _kopen_vn_
0x6d get_nth_image_dependence
0x6e _klink_
0x6f sync
0x70 __sigaction
0x71 sigpending
0x72 __sigsuspend
0x73 sigprocmask
0x74 __kill
0x75 __getegid
0x76 geteuid
0x77 __getgid
0x78 getpgrp
0x79 set_alarm
0x7a getppid
0x7b __getuid
0x7c setgid
0x7d setpgid
0x7e setsid
0x7f setuid
0x80 tcgetpgrp
0x81 tcsetpgrp
0x82 set_parent
0x83 _ksyslog_initialize_
0x84 _kget_thread_stacks_
0x85 _kread_attr_
0x86 _kwrite_attr_
0x87 _kstart_watching_vnode_
0x88 _kstop_watching_vnode_
0x89 _kread_pos_
0x8a _kwrite_pos_
0x8b _kget_default_screen_info_
0x8c fsync
0x8d is_computer_on_fire
0x8e _klock_node_
0x8f _kunlock_node_
0x90 _kremove_attr_
0x91 _kstat_attr_
0x92 _kread_attr_dir_
0x93 _krewind_attr_dir_
0x94 _kopen_attr_dir_
0x95 _kclose_attr_dir_
0x96 _kstop_notifying_
0x97 _kopen_index_dir_
0x98 _kclose_index_dir_
0x99 _kread_index_dir_
0x9a _krewind_index_dir_
0x9b _kcreate_index_
0x9c _kremove_index_
0x9d _kstat_index_
0x9e _kopen_query_
0x9f _kclose_query_
0xa0 _kread_query_
0xa1 _kfork_
0xa2 _kexec_image_
0xa3 _kwait_for_team_
0xa4 clear_caches
0xa5 _kget_system_time_parms_
0xa6 real_time_clock_usecs
0xa7 _kset_thread_name_
0xa8 _ksigactionvec_
0xa9 _kwfsstat_
0xaa _kmap_pages_
0xab _krename_attr_
0xac _krename_index_
0xad _kset_tzspecs_
0xae _kset_tzfilename_
0xaf _kget_tzfilename_
0xb0 _kget_rtc_info_
0xb1 _kget_thread_registers_
0xb2 _kset_thread_register_flag_
0xb3 read_isa_io
0xb4 write_isa_io
0xb5 _klock_memory_
0xb6 _kunlock_memory_
0xb7 set_signal_stack
0xb8 disable_debugger
0xb9 snooze_until
0xba _kset_fd_limit_
0xbb _kset_mon_limit_
0xbc _kmap_physical_memory_
0xbd _kapm_control_
0xbe waiton
0xbf _kreadv_pos_
0xc0 _kwritev_pos_
0xc1 _kget_safemode_option_
0xc2 _get_team_usage_info
0xc3 close_port
0xc4 _kload_image_etc_
0xc5 _kgeneric_syscall_
0xc6 _kstrace_init_
0xc7 _kgrant_

Re: Direct Kernel calls или...

а какие директивы нужно указать, чтобы добавить в С++ проект код на Ассемблере?
и вообще дайте ссылку на эту тему если есть.

любимый язык был когда пней не было…

Re: Direct Kernel calls или...

Читай доки по gcc. http://gcc.gnu.org

нечто вроде:

__asm__(«movl %eax, 4(%ecx)");

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <i> <img> <strong> <b> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Введите перечисленные символы, чтобы мы убедились, что вы не робот. Не требуется для зарегистрированных пользователей.
x
m
i
1
c
m
Enter the code without spaces and pay attention to upper/lower case.