LINUX.ORG.RU

доступ к регистра процессора

 


0

1

здрасьте здрасьте люди добрые. в одной из тем я пытался понять имеют ли регстры адрес, а точнее регистры процессора? посути регистры процессора-это же сверхбыстрая память, а рабоата с памятью подразумевает работу с адресами. Но скажите пожалуйста те кто пишет компиляторы,

mov x0, #1
как компилятор поспримет x0 ? как он найдет эту ячейку? x0 для компилятора не адрес? то есть x0 не alias адреса?

в одной из тем я пытался понять имеют ли регстры адрес, а точнее регистры процессора?

Это смотря какой у тебя процессор. На некоторых процессорах (например на контроллерах AVR) регистры отображены на обычную адресуемую память. Но в x86 это не так.

SZT ★★★★★
()
Ответ на: комментарий от Assembler

Нет, это регистр. Самостоятельное физическое устройство, не привязанное к RAM ни физически, ни логически.

slovazap ★★★★★
()

регистра

Нашальника, хачю регистра шатать!

З.Ы. С таким ником позорно такие вопросы задавать. Переименуйся в Javascript.

Pavval ★★★★★
()

здрасьте здрасьте люди добрые. в одной из тем я пытался понять имеют ли регстры адрес, а точнее регистры процессора?

Бывает по разному, чаще всего нет. Адрес у скажем EAX в x86 взять нельзя. Адрес есть только у MMIO регистров, которые обычно используются для управления устройствами.

X512 ★★★★★
()
Ответ на: комментарий от Pavval

А почему не JIT-компилятором?

да потому что уже занято.

Assembler
() автор топика
Ответ на: комментарий от Assembler

скажите, а что стоит в x86 за именем регистра eax? это alias?

Номер регистра в командах MOV и т.д.. Обращаться к регистрам можно только через соответствующие инструкции процессора. Смотрите документацию на инструкции (я взял старую потому что новая слишком длинная, для понимания основ хватит старой).

X512 ★★★★★
()
Ответ на: комментарий от Pavval

все равно вам делать нечего кроме как писать " я за бан", так лучше помогите советом. Вы разработчик, значит знаете как устроены мануалы. Скажите в каком мануале stm32f103c8 описаны вот эти адреса

0x42420310
и векторы?

Assembler
() автор топика
Ответ на: комментарий от Assembler

но EAX имеет адрес?

Нет, он имеет номер. Номера регистров следующие:

0 EAX
1 ECX
2 EDX
3 EBX
4 ESP
5 EBP
6 ESI
7 EDI

Номера хранятся в битах инструкций.

X512 ★★★★★
()
Ответ на: комментарий от Assembler

Скажите в каком мануале stm32f103c8 описаны вот эти адреса

В документации на периферию. К самому процессору эти адреса не имеют отношения. Какие будут устройства, такие будут и адреса. Только устройства скорее всего вшиты в микросхему процессора что называется SoC.

X512 ★★★★★
()
Ответ на: комментарий от X512

смотрите, регистр, как набор ячеек(bit), устанавливает единицу-включаем, ноль-выключено.

11010010100000000000000000000001
arm64 вот так я в регистр x1 положил ноль. то есть я установил всего лишь нужные биты в единицу. это все? компилятор это не как ни извратит?

Assembler
() автор топика
Последнее исправление: Assembler (всего исправлений: 1)
Ответ на: комментарий от X512

киньте пожалуйста ссылку? замучался качать все подряд

PORT_C_PIN13_MODE0_BIT      = 0x422200d0
вот это меня интересует. адреса GPIO и векторы

Assembler
() автор топика
Ответ на: комментарий от Assembler

компилятор это не как ни извратит?

Если это не регистр общего назначения, то не извратит. А регистры общего назначения могут использоваться компилятором под локальные переменные и временные расчёты.

X512 ★★★★★
()
Ответ на: комментарий от X512

Если это не регистр общего назначения, то не извратит

я неправильно спросил наверное. что имено произойдет для того чтобы 0 оказался в x1? можете сказать?

11010010100000000000000000000001
кто положит ноль в регистр x1? я понял что это сделает не компилятор. AЛУ?

Assembler
() автор топика
Ответ на: комментарий от Assembler

что имено произойдет для того чтобы 0 оказался в x1?

Это скорее всего регистр общего назначения, такие вещи надо на ассемблере писать, иначе компилятор будет портить. Ваше mov x0, #1 должно работать. Как только код на C/C++ начнёт исполнение в регистре может оказаться мусор.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от Assembler

Но я хочу понять AЛУ положить ноль в x1 или другое устройство?

Не распарсил. Для того чтобы присваивать константы регистрам АЛУ вообще не нужен. Арифметики тут нет.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от Assembler

Декодер инструкций и исполнитель процессора. Машинный код состоит из инструкций, в инструкции MOV хранится номер регистра и константа которую нужно записать. Процессор распознаёт инструкцию и запускает соответствующую цепь присваивания.

Документация на инструкцию MOV:

https://iitd-plos.github.io/col718/ref/arm-instructionset.pdf

Страница 10.

Номер регистра в Rd, константа в Operand 2.

X512 ★★★★★
()
Ответ на: комментарий от X512

путает меня то, что моv не инструкция. это мнемоника. декодор значит раскодирует ,а исполнитель инструкций исполнит. вот я и хотел знать как исполнитель инструкций видит регистра в который надо положить ноль

Assembler
() автор топика
Ответ на: комментарий от Assembler

Глянь код vhdl или verilog для какого-нибудь простого проца типа 6502, там тебе будет и декодирование, и исполнение инструкций. Или глянь компьютер Бена итера, он на Ютубе собирал из рассыпухи отдельные модули процессора

https://youtu.be/yl8vPW5hydQ — про восьмибитные процессоры

https://youtu.be/AwUirxi9eBg — на рассыпухе

luke ★★★★★
()
Последнее исправление: luke (всего исправлений: 2)
Ответ на: комментарий от Assembler

Например MOV R2,#1 кодируется как E3A02001.

Если посмотреть по битам будет так:

1110 00 1 1101 0 0000 0010 000000000001
Cond    I Opc  S Rn   Rd   Operand 2

1101: MOV
Rd: R2
Operand 2: #1
X512 ★★★★★
()
Ответ на: комментарий от luke

да я бы рад. но мой английский ниже нижнего. но за ссылку спасибо огромное. видно человек разбирается в том что делает

Assembler
() автор топика
Ответ на: комментарий от Assembler

Просто посмотри глазами что он друг с другом соединяет, какие микросхемы использует.

luke ★★★★★
()
Ответ на: комментарий от Assembler

но мой английский ниже нижнего

В видео есть субтитры. Включаешь их, смотришь. Если во фразе есть непонятные слова, ставишь на паузу, открываешь словарь, смотришь перевод всех слов. Незнакомые слова закидываешь в свою любимую программу для зубрёжки. Если нет любимой, бери Anki. Смотришь дальше. Не забывай заниматься зубрёжкой слов. Поначалу это тяжко, потом станет легче.

У автора роликов есть свой магазин, где он продаёт готовые наборы, которыми можно самому воспроизвести всё, что он показывал. Проще у него комплекты купить, чем самому собирать компоненты по частям.

i-rinat ★★★★★
()

Когда-то, в допотопные времена, был такой сайт: wasm.ru

И там была масса статей на русском по ассемблеру и не только.

Сейчас это сайт wasm.in, возможно и статьи там всё ещё существуют.

Там же и форум есть, хотя он уже почти не дышит с тех пор как Аквила забил на него.

Основная масса кода там под масм, но есть и с юниксовым синтаксисом

Chord ★★★★
()
Последнее исправление: Chord (всего исправлений: 1)
Ответ на: комментарий от Chord

wasm.ru сдох в 2013, вследствие пофигизма Аквилы, равно как и другие его проекты.

wasm.in — это детище двух охламонов, поднявших свой форум из дампа, слитого во время взломов давным–давно и гулявшего по сети. Впрочем, старички с прошлого форума там встречаются.

Статьи можно найти в веб-архиве, либо искать сборник в .chm.

anonymous
()
Ответ на: комментарий от Assembler

а почитать документацию или хотя бы в общих чертах понять как устроены процессоры перед тем как регистры лапать тебе религия запрещает?

salozar
()
Ответ на: комментарий от luke

Никогда не искал ничего другого, но по запросу «alternative to anki» поисковики довольно много выдают. Среди выдачи есть какой-то clanki, консольный. Не пробовал.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Я просто щас свою поделку васяню для minix, чисто для души. А запускать и на Андроиде через термукс можно будет.

luke ★★★★★
()
Ответ на: комментарий от salozar

Я вот даже хз. Судя по обилию олигофренов, задающих в технических темах одни и те же тупые вопросы в последнее время, это кто-то так развлекается — ну, не может концентрация дебилов повышаться так быстро и локально. Уж какое в этом может быть развлечение — никогда не понимал.

anonymous
()
Ответ на: комментарий от salozar

перед тем как регистры лапать

я делаю так, чтобы лучше понять. мне так понятнее. сначала практика, а потом теория. неосуждайте это. мне нужен результат. неважно как я приду к этому, хоть с конца, хоть сначала.

Assembler
() автор топика
Ответ на: комментарий от anonymous

Я слежу за его темами. И я согласен с тобой что число придурков растет. Они устанавливают куб жмакают по картинке с микроконтроллером и называют себя разработчиками. Ты хоть понимашь зачем вам навязывают среды разработок? Чтобы ты дурочка привыкла и не могла ниже чем на СИ! И тогда ты будешь платить им деньги за эти кубики-хуюбики. Конечно ты это понимаешь. И поэтому вы его ненавидите. Если они вдруг начнут обходится без ваших кубов, то ты помрешь с глодухи. Вот вы и льете желчь здесь.

anonymous
()
Ответ на: комментарий от anonymous

Я же могу придти к тебе. И меня не остановит то что вдруг ты окажешься не девушкой. Не девушки у меня тоже рожают.

anonymous
()
Ответ на: комментарий от anonymous

Я же могу придти к тебе. И меня не остановит то что вдруг ты окажешься не девушкой. Не девушки у меня тоже рожают.

anonymous
()
Ответ на: комментарий от luke

А запускать и на Андроиде через термукс можно будет.

Я ещё могу понять, зачем запускать convert, ffmpeg или sox на телефоне. Внятных инструментов для задач простой конвертаци на Android просто не найти. Но использовать консольную утилиту для зубрёжки слов, когда есть готовые программы с не пальцеломными интерфейсами… Зачем?

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Совместимость самописного формата.

На самом деле это я тупо откладываю сам процесс зубрёжки.

luke ★★★★★
()
Ответ на: комментарий от luke

я тупо откладываю сам процесс зубрёжки

С учётом того, что отложенное повторение по сути и есть откладывание, ты откладываешь процесс откладывания.

i-rinat ★★★★★
()
Ответ на: комментарий от Assembler

как исполнитель инструкций видит регистра в который надо положить ноль

Грубо говоря, на примере наколеночных процов прошлого века, он «кладет» ноль во все регистры, потому что они все на одной шине и кладет он тупо на шину (внезапно, внутри проца тоже есть шины, чтобы перегонять машинные слова между блоками исполнения). Вот только принимает и запоминает этот ноль лишь тот регистр, у которого пин «запоминай» выставился в 1 (или 0, как схемотехнику удобнее было). Какой из регистров получил туда 1 определяется дешифратором, схемой, которая умеет вход из скажем трех битов превращать в выход из восьми, которые все нули, кроме того, чей номер зашифрован на входе 000..111. Вот на этот вход и подается номер регистра из команды.

То есть например семантика (mov reg, imm) (reg=011) дешифруется в 00001000 на шине выбора регистра, а на шине данных просто by schematic design уже висит imm.

Ты же понимаешь, что в интегральной схеме нет возможности «перетыкать разъемы», вот и управляют всем через входы активации, а данные реально «шлются-подаются» сразу на всё, куда теоретически задумано, что можно было бы туда подать.

Исполнитель выбирается еще раньше, то есть если код команды не похож на mov, то и сам дешифратор mov’а просто не активируется, и выдает 00000000, и как следствие участия в процессе исполнения не принимает.

Естественно в ненаколеночных процах все это на пару-тройку порядков сложнее из-за защит, ренеймов и прочих суперскалярных приколов.

anonymous
()
Ответ на: комментарий от Chord

юниксовым синтаксисом

AT&T’шным имеешь ввиду? Никогда не понимал теплых чувств к этой уродливой тарабарщине, хвала аллаху за интел-синтакс.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.