nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Apr 2024 16:02



Reply to topic  [ 216 posts ]  Go to page Previous  1 ... 11, 12, 13, 14, 15
MC68000 
Author Message
Writer
User avatar

Joined: 20 Jul 2023 15:10
Posts: 11
Reply with quote
Хммм.. и правда :) мнемоники умножения нету
Ну так компилятору виднее, значит :D


29 Mar 2024 14:24
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22618
Location: Silicon Valley
Reply with quote
Компилятор по умолчанию наверное решил, что это старый допотопный mc68000 - поди ему ключиками можно как-то сказать, чтобы задействовал инструкции mc68030?

P.S. Хотя пишут даже 68000 умел умножать за много-много тактов через микрокод:

MULS 70(1/0)+*
MULU 70(1/0)+*

P.P.S. Может int 32-битный, а умножает оно 16-битные слова? Попробуй заменить int на short в программе

_________________
:dj: https://mastodon.social/@Shaos


29 Mar 2024 17:16
Profile WWW
Writer
User avatar

Joined: 20 Jul 2023 15:10
Posts: 11
Reply with quote
Нет-нет, компилер самой последней версии + в строку компилятора изначально вставил прямо mcpu=68030:
Code:
m68k-linux-gnu-gcc-10 -mcpu=68030 -msoft-float testm.s -S testm.c

Компилируем без оптимизации, она нам в данном случае не нужна (наша цель -- понять, как оно работает и приспособить компилер под наше голое железо)
Если немного видоизменить входной файл, то компилер начнет использовать инструкцию MULS.L:
Code:
void main()
{
    int a = 7;
    int b = 123;
    a = a*b;
}

Вот, что получается
Code:
#NO_APP
   .file   "testm.c"
   .text
   .align   2
   .globl   main
   .type   main, @function
main:
   link.w %fp,#-8
   moveq #7,%d0
   move.l %d0,-4(%fp)
   moveq #123,%d0
   move.l %d0,-8(%fp)
   move.l -4(%fp),%d0
   muls.l -8(%fp),%d0
   move.l %d0,-4(%fp)
   nop
   unlk %fp
   rts
   .size   main, .-main
   .ident   "GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.0"
   .section   .note.GNU-stack,"",@progbits


Last edited by Barsevich on 30 Mar 2024 03:16, edited 3 times in total.



30 Mar 2024 02:50
Profile
Writer
User avatar

Joined: 20 Jul 2023 15:10
Posts: 11
Reply with quote
Да, касательно указания компилятору, где какая область памяти находится. Пока накопал следующую инфу: объектный файл разбит на несколько секций:
- секция .text -- это непосредственно машинный код
- секция .data -- это данные программы (как я понял, это что-то вроде progmem, но могу ошибаться, надо еще изучать тему)
- секция .bss -- это и есть наша "куча", область для статических переменных
- секция .stack -- это область стека

Изначально этим секциям присвоены какие-то неочевидные адреса. (например, для .text начальный адрес -- 0x8000032C). Слева на этом дампе можно видеть адреса. Если преобразовывать -o в -hex, то там те же адреса программ остаются
Code:
m68k-linux-gnu-objdump -s -j .text testm.o

testm.o:     file format elf32-m68k

Contents of section .text:
 8000032c 4e754e71 9dce201f 204f4857 48514879  NuNq.. . OHWHQHy
 8000033c 80000460 48798000 04104850 2f004879  ...`Hy....HP/.Hy
 8000034c 8000032c 61ffffff ffc64afc 203c8000  ...,a.....J. <..
 8000035c 40280c80 80004028 671441f9 00000000  @(....@(g.A.....
 8000036c 4a88670a 48798000 40284e90 588f4e75  J.g.Hy..@(N.X.Nu
 8000037c 203c8000 40280480 80004028 2200e481   <..@(....@("...
 8000038c d0809180 4480d081 e2806716 41f90000  ....D.....g.A...
 8000039c 00004a88 670c2f00 48798000 40284e90  ..J.g./.Hy..@(N.
 800003ac 508f4e75 2f0a2f02 4a398000 40286644  P.Nu/./.J9..@(fD
 800003bc 243c8000 3f2c0482 80003f28 e4825382  $<..?,....?(..S.
 800003cc 45f98000 3f282039 8000402a b4806318  E...?( 9..@*..c.
 800003dc 528023c0 8000402a 20720c00 4e902039  R.#...@* r..N. 9
 800003ec 8000402a b48062e8 4ebaff62 13fc0001  ..@*..b.N..b....
 800003fc 80004028 241f245f 4e754e75 6000ff72  ..@($.$_NuNu`..r
 8000040c 4e754e71 48e73e24 4bfb0170 00003bea  NuNqH.>$K..p..;.
 8000041c 282f0020 2a2f0024 2c2f0028 61ffffff  (/. */.$,/.(a...
 8000042c fe922475 01700000 00182635 01700000  ..$u.p....&5.p..
 8000043c 001c968a e4836716 4282205a 2f062f05  ......g.B. Z/./.
 8000044c 2f044e90 52824fef 000cb483 66ec4cdf  /.N.R.O.....f.L.
 8000045c 247c4e75 4e754e71 2f0a2079 80003f20  $|NuNuNq/. y..?
 8000046c 70ffb088 671045f9 80003f20 4e902062  p...g.E...? N. b
 8000047c 70ffb088 66f6245f 4e754e75           p...f.$_NuNu   

Когда мы преобразуем .o файл в гексовый с помощью objcopy, можно изменить дефолтные адреса секций ключом --change-section-address.
- с .text все понятно -- в конечном гексовом файле видно, как изменяются адреса кода
- с .bss в теории понятно -- устанавливаем адрес начала "кучи"
- co .stack в теории тоже понятно
- а вот что касается .data, мне пока не очень понятно, какой адрес ему выдавать, .data должно быть в той же области памяти, что и .text
Короче надо копать дальше

А лучше, найти какую-то книгу, в которой это все было бы расписано подробно


30 Mar 2024 03:06
Profile
Senior

Joined: 01 Jan 2022 04:34
Posts: 173
Location: USSR, Tashkent
Reply with quote
data это глобальные переменные или инициализированные

text - или пзу или озу как хошь
data - сначала озу или конец проги
bss - после даты
stack - конец озу


30 Mar 2024 05:21
Profile
Writer
User avatar

Joined: 20 Jul 2023 15:10
Posts: 11
Reply with quote
Приехали сегодня, красавцы
На фото для сравнения с 1801ВМ3, тоже желанной штучкой)
Надо бы двигаться в сторону стенда для испытаний микропроцессора.


Attachments:
mc68030.jpg
mc68030.jpg [ 91.45 KiB | Viewed 1618 times ]
09 Apr 2024 12:54
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 216 posts ]  Go to page Previous  1 ... 11, 12, 13, 14, 15

Who is online

Users browsing this forum: No registered users and 37 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.