Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Нужна помощь студенту


Автор: vi2ir 12.12.2008, 22:13
Здравствуйте  smile Помогите пожалуйста!!! Мне по архитектуре ЭВМ задали "реализовать функцию strndup в сишной библиотеке <string.h>" на ассемблере... Но нужно, чтобы на языке С она вызывалась... При компиляции должно быть что-то такое gcc mystr.c mystr.s -o mystr  Я честно не очень понимаю как всё это функционирует  :'(... Только учусь... И ещё это должно быть под Linux сделано (ну хотя бы под Windows, и то благодарен буду)  smile

Автор: MAKCim 12.12.2008, 23:09
вот пример
Код

// func.h

extern int func(int a, int b); // return a + b

Код

# func.S

.code32
.text
.globl func
func:
    movl 4(%esp), %eax
    addl 8(%esp), %eax
    ret

Код

// main.c
#include "func.h"

int main()
{
    int a = 10, b = 20;
    printf("%d\n", func(a, b));
    return 0;
}

Код

# gcc main.c func.S -o main
# ./main

Автор: vi2ir 12.12.2008, 23:27
ну это я все понимаю, мне нужен конкретный пример я все вот запускаю но она не работает, сейчас покажу мою нерабочую версию....
char* strndup(const char* s, int n) // копирует строку длиной N
{
if(s == zerostring || n == 0) return zerostring;
char* d = strnew(n);
strncpy(d, s, n);
d[n] = 0;
  так сказать как это реализовать ?! так мне обяз . нужен в ассемблере малок, примерно вот так
call malloc
, мы там забили на ход стека 3 адреса, ebx ecx ebx  и вопрос что делать далее???я сейчас найду файд=лы свои с компа универского и вышлю потому как не получается их  скачать со своего мыла!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)