anonymous@RULINUX.NET~# Last login: 2024-11-26 12:14:03
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

[assembler][некрофилия]Почему bootsect.S не собирается?

выполнил я значит в каталоге с сорцами ядра 0.95а make dep, потом набираю make и получаю такое:

bashmake
cpp -nostdinc -Iinclude -traditional boot/bootsect.S -o boot/bootsect.s                                                                                                                                    
as86 -0 -o boot/bootsect.o boot/bootsect.s                                                                                                                                                                
00124 002F         0FB536       0000                    lgs     si,(bx)                 ; gs:si is source                                                                                                  
***** register used as identifier...................................^                                                                                                                                      
00135                                                   movb    4(di),*18               ; patch sector count                                                                                              
***** comma expected.............................................^                                                                                                                                        
***** register used as identifier.................................^                                                                                                                                        
***** illegal indirect to indirect...................................^                                                                                                                                    
***** junk after operands............................................^                                                                                                                                    
00138 0040           893E       0000                    mov     (bx),di                                                                                                                                    
***** register used as identifier................................^                                                                                                                                        
00140                                                   mov     2(bx),es                                                                                                                                  
***** register used as identifier.................................^
***** illegal indirect to indirect...................................^
***** junk after operands............................................^
***** comma expected.............................................^
00376 01A5           8B16       0000                    mov     dx, (bp)        ; load word into dx
***** register used as identifier....................................^
00124 002F         0FB536       0000                    lgs     si,(bx)                 ; gs:si is source
***** register used as identifier...................................^
00135                                                   movb    4(di),*18               ; patch sector count
***** register used as identifier.................................^
***** comma expected.............................................^
***** illegal indirect to indirect...................................^
***** junk after operands............................................^
00138 0040           893E       0000                    mov     (bx),di
***** register used as identifier................................^
00140                                                   mov     2(bx),es
***** comma expected.............................................^
***** illegal indirect to indirect...................................^
***** junk after operands............................................^
***** register used as identifier.................................^
00376 01A5           8B16       0000                    mov     dx, (bp)        ; load word into dx
***** register used as identifier....................................^

00011 errors
00000 warnings
make: *** [boot/bootsect] Ошибка 1
 
А от фрагмент кода, на который ругается:
asm        lgs     si,(bx)                 ; gs:si is source

        mov     di,dx                   ; es:di is destination
        mov     cx,#6                   ; copy 12 bytes
        cld

        rep
        seg gs
        movw

        mov     di,dx
        movb    4(di),*18               ; patch sector count

        seg fs
        mov     (bx),di
        seg fs
        mov     2(bx),es
 
Вопрос: как поправить код так, чтобы он компилировался и при этом выполнял те же функции? Спасибо.

Dorif(*) (2012-03-19 19:46:55)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11

[Ответить на это сообщение]
avatar
Скрыть

Re:[assembler][некрофилия]Почему bootsect.S не собирается?

as86 использует синтаксис nasm, а тут явно что-то другое

anonymous(*)(2012-03-19 21:39:47)

Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0
avatar
Скрыть

Re:[assembler][некрофилия]Почему bootsect.S не собирается?

А почему собственно так? То есть синтаксис nasm?

Dorif(*)(2012-03-19 22:10:13)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11
avatar
Скрыть

Re:[assembler][некрофилия]Почему bootsect.S не собирается?

Что-то мне кажется, что надо использовать обратный порядок аргументов. Хотя вообще это что-то странное. В gas вроде перед регистрами ещё % ставится..

anonymous(*)(2012-03-19 22:38:53)

Mozilla/5.0 (X11; Linux x86_64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
avatar
Скрыть

Re:[assembler][некрофилия]Почему bootsect.S не собирается?

используй другой ассемблер для сборки

bugmaker(*)(2012-03-19 22:58:53)

Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
avatar
Скрыть

Re:[assembler][некрофилия]Почему bootsect.S не собирается?

из истории

>QUESTION: What is as86.tar.Z ?
>ANSWER: It's the port of Bruce Evans' minix assembler, you need it to
>be able to recompile Linux at your convenience.
собственно отсюда http://www.debath.co.uk/dev86/

берёшь Dev86src-X.Y.Z.tar.gz

у меня вроде компилится без ошибок

anonymous(*)(2012-03-19 23:05:56)

Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0
avatar
Скрыть

Re:[assembler][некрофилия]Почему bootsect.S не собирается?

просто разные синтаксисы. Возможно добавление ключа -а к твоему as86 поможет скомпилировать этот файл.

bugmaker(*)(2012-03-20 03:54:59)

Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Этот тред читают 1 пользователь:
Анонимных: 1
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!