Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2008, 02:41   #1
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию Реализация функций из библиотеки stdio.h

Хотелось бы узнать, где можно посмотреть пример реализации стандартных библиотечных функций Си (printf, scanf и т.п). Может есть статьи какие, по написанию их аналогов?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 20.11.2008, 09:01   #2
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

В книжке Бьерн Страуструп "Язык программирования C++. Специальное издание"/ Пер. с англ -М.: ООО "Бином-Пресс", 2006. - 1104 с.: ил.
Ну и в похожих изданиях... Там рассказывается о функциях, которые принимают неопределенное кол-во аргументов...
StarWorm вне форума Ответить с цитированием
Старый 20.11.2008, 22:57   #3
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от StarWorm Посмотреть сообщение
В книжке Бьерн Страуструп "Язык программирования C++. Специальное издание"/ Пер. с англ -М.: ООО "Бином-Пресс", 2006. - 1104 с.: ил.
Ну и в похожих изданиях... Там рассказывается о функциях, которые принимают неопределенное кол-во аргументов...

Эта книга на столе у меня лежит =) Правда читать только начал...
Но с функциями, принимающими неопределенное количество аргументов я умею работать, проблема конкретно в реализации, например, выводе на экран.Слышал что то, что надо взять указатель на определенный адрес памяти, и поместить по нему нужную строку, но толком ничего не знаю
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 20.11.2008, 23:04   #4
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Это уже зависит от того, под какую ОС программируешь. Т.е. это уже системное программирование.
filosof_x86 вне форума Ответить с цитированием
Старый 21.11.2008, 19:09   #5
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Да мне бы для любой ОС пример посмотреть... я что-то вообще ничего найти не могу =(
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 21.11.2008, 20:54   #6
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Код:
; Hello World for Intel Assembler (MSDOS)

mov ax,cs
mov ds,ax
mov ah,9
mov dx, offset Hello
int 21h
xor ax,ax
int 21h

Hello:
  db "Hello World!",13,10,"$"
Код:
;; Hello World for the nasm Assembler (Linux)
	
	SECTION .data

	msg	db	"Hello, world!",0xa ; 
	len	equ     $ - msg

	SECTION .text
	global main

main:
        mov     eax,4		; write system call
        mov     ebx,1           ; file (stdou)
        mov     ecx,msg         ; string
        mov     edx,len         ; strlen
	int     0x80		; call kernel

	mov	eax,1		; exit system call
        mov     ebx,0      
        int     0x80		; call kernel
[Взято с http://www.roesler-ac.de/wolfram/hello.htm ]

Под Windows можно использовать API: http://msdn.microsoft.com/en-us/libr...73(VS.85).aspx
filosof_x86 вне форума Ответить с цитированием
Старый 21.11.2008, 20:56   #7
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Это все конечно здорово, но хотелось бы увидеть код на Си =))
Или средствами Си невозможно реализовать подобное? Но ведь функция printf наверняка на Си написана...
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария

Последний раз редактировалось Blade; 21.11.2008 в 20:58.
Blade вне форума Ответить с цитированием
Старый 22.11.2008, 03:45   #8
pupor
 
Регистрация: 21.11.2008
Сообщений: 6
По умолчанию

чтобы код посматреть напиши прогу с этими функциями, запусти отладчик и под отладчиком войди внутрь функции. там и есть код на си.
pupor вне форума Ответить с цитированием
Старый 22.11.2008, 12:08   #9
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Не получается так... внутри функции отладчик показывает код на ассемблере (или дизассемблированный)

Код:
Unit1.c.11: printf("Hello world!");
00401173 68A4204000       push $004020a4
00401178 E89B010000       call $00401318
0040117D 59               pop ecx
Цитата:
CC3270._printf:
3276FFD0 55 push ebp
3276FFD1 8BEC mov ebp,esp
3276FFD3 8D450C lea eax,[ebp+$0c]
3276FFD6 50 push eax
3276FFD7 6A00 push $00
3276FFD9 6A00 push $00
3276FFDB 8B5508 mov edx,[ebp+$08]
3276FFDE 52 push edx
3276FFDF 68B0C07932 push $3279c0b0
3276FFE4 683CE77632 push $3276e73c
3276FFE9 E8C62E0000 call $32772eb4
3276FFEE 83C418 add esp,$18
3276FFF1 5D pop ebp
3276FFF2 C3 ret
3276FFF3 90 nop
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария

Последний раз редактировалось Blade; 22.11.2008 в 12:11.
Blade вне форума Ответить с цитированием
Старый 23.11.2008, 12:35   #10
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Ну что, так никто и не поможет? =((
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
библиотеки ShenDy Общие вопросы C/C++ 5 25.07.2008 21:45
Библиотеки в С++ MIKI Свободное общение 5 10.06.2008 20:15
DLL библиотеки Altera Помощь студентам 2 06.02.2008 06:13
Unable to open unclude file 'Stdio.h' Как правильно его подключить? Exclusive Помощь студентам 6 28.01.2008 17:24
Реализация функций синхронизации потоков. натка Помощь студентам 1 03.01.2008 15:26