Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Konst2016
7 / 7 / 9
Регистрация: 07.02.2016
Сообщений: 189
Записей в блоге: 8
1

Реализовать виртуальную машину наподобии CPython

01.07.2018, 23:05. Просмотров 288. Ответов 4

Привет!Хочу разобрать виртуальную машину примерно взятую с CPython.Немного
разбирал такую ВМ реализованную на Python.Сейчас хочу разобрать,сделанную на C.
Часть я здесь взял с файла ceval.c(CPython).Часть дописал сам-строку
C
1
unsigned char *code={ICONST,99,HALT}
.Надо сделать так чтобы
прога выбирала опкоды c массива code и выбирала аргумент у ICONST.И выводила опкоды и
его аргументы на printf.Пока в коде запутано.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#define ICONST 1
#define HALT   2
//массив кода
unsigned char code[3]={ICONST,99,HALT}
register unsigned char *next_instr;
//текущий опкод
register unsigned char *next_instr;
//текущий аргумент опкода,если есть
register int oparg;
 
 
while(1){
opcode=*next_instr++;
//printf(<opcode>)
switch(opcode){
case ICONST:
(next_instr[-1]<<8)+next_instr[-2];
next_instr+=2;
//printf(<oparg>)
  //...
  continue;
case HALT:
  return;
}
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2018, 23:05
Ответы с готовыми решениями:

Загрузка в виртуальную машину
Здравствуйте, у меня проблема! Нужна помощь. Много времени ищу в интернете, но ничего нужного не...

Не устанавливается на виртуальную машину
Хочу посмотреть восьмерку, но устанавливать, снося старую не хочу. Пытался установить на Oracle VM...

Посоветуйте виртуальную машину.
Бесплатные,и платные,ваши советы.

Установка ХР на виртуальную машину
Опытные и начинающие, проконсультируйте, пожалуйста :) В VMware Workstation 6.5 и в Sun Virtual Box...

Ищу виртуальную машину
Хост Windows XP. Ищу безупречную виртуалку. Опишу проблему. Сейчас пользуюсь Oracle VM...

4
vasukma
1 / 1 / 0
Регистрация: 07.05.2018
Сообщений: 19
02.07.2018, 06:26 2
Вы уверены, что веткой не ошиблись?
0
Konst2016
7 / 7 / 9
Регистрация: 07.02.2016
Сообщений: 189
Записей в блоге: 8
02.07.2018, 06:54  [ТС] 3
А что тут?)Здесь просто правильно как то нужно по массиву пройтись и разобраться с битовым сдигом
C
1
(next_instr[-1]<<8)+next_instr[-2];
Добавлено через 2 минуты
Может так?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#define ICONST 1
#define HALT   2
//массив кода
unsigned char code[3]={ICONST,99,HALT}
register unsigned char *next_instr;
//текущий опкод
register unsigned char *next_instr;
//текущий аргумент опкода,если есть
register int oparg;
 
 
while(1){
opcode=*code++;
//printf(<opcode>)
switch(opcode){
case ICONST:
(code[-1]<<8)+code[-2];
code+=2;
//printf(<oparg>)
  //...
  continue;
case HALT:
  return;
}
}
0
vasukma
1 / 1 / 0
Регистрация: 07.05.2018
Сообщений: 19
02.07.2018, 07:33 4
Си для начинающих, а я даже не вижу заголовка функции ))) Это кусок большой функции?
0
Konst2016
7 / 7 / 9
Регистрация: 07.02.2016
Сообщений: 189
Записей в блоге: 8
02.07.2018, 13:33  [ТС] 5
Ну это в main можно поместить.
0
02.07.2018, 13:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2018, 13:33

Установка хр на виртуальную машину
напишите пожалуйста последовательность действий для установки винды на виртуальную машину.....

Установить RAID 50 на виртуальную машину
Столкнулся с такой проблемой не знаю как сделать из 6 Ж.д. емкостью 5 гб один на raid 50. На...

Не удается запустить виртуальную машину
Выдаёт такую ошибку:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru