Gentoo kernel x86_64 или же x86 (что из этого правда?)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Аватара пользователя
Dreamer77
Сообщения: 202
ОС: Debian, openSUSE, Mac OS X

Gentoo kernel x86_64 или же x86

Сообщение Dreamer77 »

Не знаю сколько смысла в моем посте, но очень давно меня этот момент заинтересовал.
Система стоит 64-битная, multilib ествественно.
Компилируется ядро как обычно, а потом из папки
/usr/src/linux/arch/x86_64/boot/
копируется файл bzImage, который по сути является ссылкой на файл
/usr/src/linux/arch/x86/boot/bzImage.
Вот сижу и думаю это разработчики недоделали нормальный путь помещения результирующего ядра, или же действительно ядро x86 компилится???
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Gentoo kernel x86_64 или же x86

Сообщение KiWi »

uname -a

не?
Спасибо сказали:
Аватара пользователя
Dreamer77
Сообщения: 202
ОС: Debian, openSUSE, Mac OS X

Re: Gentoo kernel x86_64 или же x86

Сообщение Dreamer77 »

такой способ известен мне уже не один год=)

интересно, чем же так невзлюбили x86_64, что в этой директории вообще ничего нет?
Зачем тогда она нужна?
вот в директории x86 набито файлов и диркторий под завязку.
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Gentoo kernel x86_64 или же x86

Сообщение KiWi »

Dreamer77 писал(а):
01.02.2011 02:08
интересно, чем же так невзлюбили x86_64, что в этой директории вообще ничего нет?

Достаточно взглянуть на название, чтобы понять, что x86_64 -- это всего лишь дополнение к x86.

Ваш К.О.
Спасибо сказали:
Аватара пользователя
Dreamer77
Сообщения: 202
ОС: Debian, openSUSE, Mac OS X

Re: Gentoo kernel x86_64 или же x86

Сообщение Dreamer77 »

другое название amd64, каковое используется на сайте Gentoo повсеместно.
Вот что мне и не понятно -- неужто на уровня ядра в них почти нет различий?
В то время как для запуска приложений 32битных под системой 64битной требуются соответствующие 32битные библиотеки.

Ну, в этом вопросе видимо придется курить мат.часть по устройству ядра, и его зависимость от архитектуры.
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Gentoo kernel x86_64 или же x86

Сообщение serzh-z »

Dreamer77 писал(а):
01.02.2011 09:39
Вот что мне и не понятно -- неужто на уровня ядра в них почти нет различий?
Есть, но она не столь существенна, как между x86 и, скажем, PPC. Основные отличия x86_64 от x86 касаются разрядности и количества регистров.
Спасибо сказали:
Аватара пользователя
Dreamer77
Сообщения: 202
ОС: Debian, openSUSE, Mac OS X

Re: Gentoo kernel x86_64 или же x86

Сообщение Dreamer77 »

тогда зачем выделять x86_64 в отдельную ветвь архитектур?
посмотрел в папки других архитектур, так там внутри есть несколько директорий отвечающим различным версиям данной архитектуры.
А с x86 и x86_64 получается, что последняя является совершенно новой архитектурой, раз ее выделили в отдельную "внешнюю" директорию (хотя и присутствует в ней только один единственный путь к ссылке на бинарник ядра в папке x86).

Вопрос: если между x86 и x86_64 настолько мало различий, то почему для выполнения 32битных программ в 64битной среде необходимы дополнительные библиотеки?
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Gentoo kernel x86_64 или же x86

Сообщение serzh-z »

Dreamer77 писал(а):
01.02.2011 13:17
А с x86 и x86_64 получается, что последняя является совершенно новой архитектурой
Это не _совершенно_ новая архитектура. Это патч к x86 (таким же патчем/костылём, каким, в своё время, был 80386, по отношению к 80286).
Dreamer77 писал(а):
01.02.2011 13:17
Вопрос: если между x86 и x86_64 настолько мало различий, то почему для выполнения 32битных программ в 64битной среде необходимы дополнительные библиотеки?
Потому что разная длина регистров и разная длина адресов, а также на x86_64 слегка расширен набор команд.
Спасибо сказали:
Аватара пользователя
Dreamer77
Сообщения: 202
ОС: Debian, openSUSE, Mac OS X

Re: Gentoo kernel x86_64 или же x86

Сообщение Dreamer77 »

serzh-z писал(а):
01.02.2011 13:30
Это не _совершенно_ новая архитектура.
Я говорил это утрированно. Просто по причине выделения в arch/ отдельного каталога

serzh-z писал(а):
01.02.2011 13:30
Это патч к x86 (таким же патчем/костылём, каким, в своё время, был 80386, по отношению к 80286).
Что же такого в нем костыльного? Я думал PAE на 32битной системе это костыль.

serzh-z писал(а):
01.02.2011 13:30
Потому что разная длина регистров и разная длина адресов, а также на x86_64 слегка расширен набор команд.
Если регистры увеличены, длина адресов увеличена и расширен набор команд, то почему 32битные программы не могут работать внутри 64 бит?
Примеры:
- новый артист использует 10 веревочек, а старый использовал только 5. Значит если висят 10 веревочек, то и старый может использовав 5 из 10 делать свое выступление.
- маленький кубик/матрешка влезет в большой кубик/матрешку.
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5435
ОС: Gentoo

Re: Gentoo kernel x86_64 или же x86

Сообщение /dev/random »

Dreamer77 писал(а):
01.02.2011 15:34
Если регистры увеличены, длина адресов увеличена и расширен набор команд, то почему 32битные программы не могут работать внутри 64 бит?

Бинарное представление ассемблерных команд разное. На увеличенный адрес нужно выделять больше битов внутри команды, и т.п.
Спасибо сказали:
Аватара пользователя
Dreamer77
Сообщения: 202
ОС: Debian, openSUSE, Mac OS X

Re: Gentoo kernel x86_64 или же x86

Сообщение Dreamer77 »

/dev/random писал(а):
01.02.2011 15:59
Бинарное представление ассемблерных команд разное. На увеличенный адрес нужно выделять больше битов внутри команды, и т.п.
можно об этом где-нибудь более подробно почитать?
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5435
ОС: Gentoo

Re: Gentoo kernel x86_64 или же x86

Сообщение /dev/random »

Dreamer77 писал(а):
01.02.2011 16:15
можно об этом где-нибудь более подробно почитать?

В любом учебнике по ассемблеру. Даже если он будет не очень новый, и в нём не будет ничего о 64-bit, разница между 16-bit и 32-bit даст достаточное об этом представление.
Спасибо сказали:
Аватара пользователя
Dreamer77
Сообщения: 202
ОС: Debian, openSUSE, Mac OS X

Re: Gentoo kernel x86_64 или же x86

Сообщение Dreamer77 »

Спасибо, буду просвящаться.
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Gentoo kernel x86_64 или же x86

Сообщение serzh-z »

Dreamer77 писал(а):
01.02.2011 15:34
то почему 32битные программы не могут работать внутри 64 бит?
Почему 32-х битные программы не могут связываться с 64-х битными?.. См. выше - разная длина адресов или, как тут более красиво подсказали, разные размеры указателей и разные размеры элементов на стеке.
Спасибо сказали:
Аватара пользователя
Dreamer77
Сообщения: 202
ОС: Debian, openSUSE, Mac OS X

Re: Gentoo kernel x86_64 или же x86

Сообщение Dreamer77 »

про разные размеры я понял.
Почему тогда не дополнять 32 битные указатели до размеров 64 битных, символами не значащими ничего, кроме как то, что данная программа 32-х битная? Или это получается костыль, которого захотели избежать в чистых 64-х битных системах?

Можно ведь было небольшими потерями организовать "адаптер" -- как для случая SD и microSD :unsure:
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5435
ОС: Gentoo

Re: Gentoo kernel x86_64 или же x86

Сообщение /dev/random »

Dreamer77 писал(а):
01.02.2011 16:52
Почему тогда не дополнять 32 битные указатели до размеров 64 битных, символами не значащими ничего, кроме как то, что данная программа 32-х битная?

Где дополнять? В 32-битных программах? Так набор инструкций в них существует уже десятки лет, и если внести такие изменения, то несовместимость между "старыми" и "новыми" 32-битными программами будет такая же, как сейчас между 32- и 64-битными. По сути, "новые" 32-битные программы станут 64-битными, просто использующими не всё адресное пространство. Но "старые" 32-битные программы от этого не исчезнут. И не смогут пользоваться этим костылём, т.к. они уже есть такие, какие они есть. Без этого костыля. Десятки лет.
Спасибо сказали:
Аватара пользователя
Dreamer77
Сообщения: 202
ОС: Debian, openSUSE, Mac OS X

Re: Gentoo kernel x86_64 или же x86

Сообщение Dreamer77 »

одно ясно точно -- в этом деле надо более подробно разбираться.
насколько я понял из разговора - в 32-х бытный программах в бинарном файле содержутся указатели малого размера, в рассчете на то, что в системе только такой размер и используется.
При попытке выполнения 32-х битной (скомпиллированной) программы в 64-х битной среде первая пытается оперировать с указателями малого размера, в то время как в системе есть только указатели большого размера. В следствие чего по первому же запросу через указатель программа нарывается на неверный набор данных -- кусок от указателя, стандартного в системе. В результате чего возникает ошибка или же программа делает неизвестно что.

Я правильно понял ваши общие слова применительно к практике?
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5435
ОС: Gentoo

Re: Gentoo kernel x86_64 или же x86

Сообщение /dev/random »

Dreamer77 писал(а):
01.02.2011 18:18
Я правильно понял ваши общие слова применительно к практике?

Почти. Программа нарывается на неверную инструкцию.

Код: Выделить всё

1AAAA2BBBB
1AAAAAAAA2BBBBBBBB
Сверху - последовательность байтов (или меньших порций битов, неважно) в программе. "1", "2" - коды асм. операций, AAAA, BBBB - аргументы. Процессор же будет ждать нижнюю последовательность. Даже если аргумент AAAAAAAA будет "реалистичным", дальше всё равно в качестве следующего кода операции будет прочитан байт аргумента (последняя из четырёх B). И начнётся хаос.

Dreamer77 писал(а):
01.02.2011 18:18
одно ясно точно -- в этом деле надо более подробно разбираться.

Вот это разумная мысль. Почитайте об ассемблере, и все вопросы сразу отпадут.
Спасибо сказали:
Аватара пользователя
Dreamer77
Сообщения: 202
ОС: Debian, openSUSE, Mac OS X

Re: Gentoo kernel x86_64 или же x86

Сообщение Dreamer77 »

/dev/random писал(а):
01.02.2011 18:30
Сверху - последовательность байтов (или меньших порций битов, неважно) в программе. "1", "2" - коды асм. операций, AAAA, BBBB - аргументы. Процессор же будет ждать нижнюю последовательность. Даже если аргумент AAAAAAAA будет "реалистичным", дальше всё равно в качестве следующего кода операции будет прочитан байт аргумента (последняя из четырёх B). И начнётся хаос.
примерно это я и хотел сказать. Не хватило терминологических знаний =)

/dev/random писал(а):
01.02.2011 18:30
Вот это разумная мысль. Почитайте об ассемблере, и все вопросы сразу отпадут.
Обязательно почитаю. Жаль в школе его не преподавали. Лучше бы ассемблер вместо LOGO WRITER преподавали.

Спасибо за терпение в объяснение непонимающему мне!
Ubuntu-->Debian-->Gentoo-->openSUSE-> Mac OS X
Спасибо сказали: