Войти
ФлеймФорумПрограммирование

Язык с битовой адресацией[Обсуждение]

Страницы: 1 2 Следующая »
#0
22:16, 19 окт. 2013

Всем привет!

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

fixed_uint<array<bit,32>> e=1;
raw_ptr<array<bit,32>,fixed_uint<array<bit,32>>> ptr=&e;
bit b=true;
bit&ref=b;
ref=false;
vector<bit> v;
v.resize(3);
v[1]=1;
v[2]=b;
v[0]=bit(*ptr);
array<fixed_uint<array<bit,32>>> arr={1,2,3,4};
arr[3].at(2)=7;
raw_ptr<array<bit,32>,bit> parr=&arr[0].at(0);
parr[10]=e.at(31);
array<vector<bit>,2> arrOfVec={{0,1,0},{parr[11],1}};
fixed_uint<array<bit,1<<(1<<1024)>> mega_uint=1<<(1<<1024);
string<fixed_uint<array<bit,8>>> str="hello world";
struct t_foo{
  bit a;
  const bit&c;
} foo={0,ref};
auto&foo_a=foo.a;

#1
22:17, 19 окт. 2013

Adler
этот язык называется llvm

#2
22:18, 19 окт. 2013

http://llvm.org/docs/LangRef.html#primitive-types
i1  a single-bit integer.
i32  a 32-bit integer.
i1942652  a really big integer of over 1 million bits.

#3
22:22, 19 окт. 2013

Уже было на гд.

#4
22:24, 19 окт. 2013

Adler
std::bitset?

#5
23:11, 19 окт. 2013

laMer007
> Уже было на гд.
поробовал найти тему - не нашел.
> std::bitset?
этот костыль эмулирует побитовую адресацию, но сам C++ её не поддерживает(в C++ нет типов размером в 1 бит).

cNoNim
> этот язык называется llvm
Вообще очень похоже. Шаблонов в нем нет?

PS: Странно, не нашёл hello_world на llvm.

#6
23:14, 19 окт. 2013

Шаблоны? Навесь м4, будут

#7
23:15, 19 окт. 2013

Adler
llvm это промежуточный язык для компиляторов, он здесь не подойдёт.

#8
23:16, 19 окт. 2013

Adler
> Шаблонов в нем нет?
llvm это типа ассемблер... какие шаблоны? какие хеловорлды?

#9
23:16, 19 окт. 2013

Adler
> в C++ нет типов размеров в 1 бит
типов может и нет, но:

+ Показать

http://ideone.com/09P5OQ
#10
23:31, 19 окт. 2013

laMer007
> типов может и нет, но:
На битовые поля в С++ без костылей нельзя взять указатель или ссылку. Битовые поля - приделаны к Си/С++ как костыль.
Такого не должно быть в языке с побитовой адресацией:
http://ideone.com/jutMOT

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

#11
23:33, 19 окт. 2013

Adler
он бы давно появился если бы это было каму то надо
даже в LLVM у типов вроде i1 выравнивание 8 бит по умолчанию...
да можно менять... битовые поля как раз как то так реализуются
но я бы не сказал что это прям необходимая вещь

#12
23:35, 19 окт. 2013

Adler
> Я считаю, что когда-то появится язык, в котором можно будет брать указатель или
> ссылку на поле размером в один бит также как и на любое другое поле.

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

#13
0:21, 20 окт. 2013

Adler
> PS: Странно, не нашёл hello_world на llvm.
Плохо искал!

@msg = internal constant [13 x i8] c"Hello World!\00"

declare i32 @puts(i8*)

define i32 @main() {
  call i32 @puts(i8* getelementptr inbounds ([13 x i8]* @msg, i32 0, i32 0))
  ret i32 0
}
#14
14:02, 20 окт. 2013

всё вроде понял, кроме
kipar
> getelementptr inbounds
это зачем?

и declare - это список импорта?

Страницы: 1 2 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.