https://www.gnu.org/software/libjit/doc/libjit_2.html#Features
LibJIT 也是一个 JIT 库
LibJIT 也是一个 JIT 库
#include <jit/jit.h>
int compile_mul_add(jit_function_t function)
{
jit_value_t x, y, z;
jit_value_t temp1, temp2;
x = jit_value_get_param(function, 0);
y = jit_value_get_param(function, 1);
z = jit_value_get_param(function, 2);
temp1 = jit_insn_mul(function, x, y);
temp2 = jit_insn_add(function, temp1, z);
jit_insn_return(function, temp2);
return 1;
}
int main(int argc, char **argv) {
jit_function_t function;
jit_context_t context;
context = jit_context_create();
jit_context_build_start(context);
jit_function_set_on_demand_compiler(function, compile_mul_add);
jit_type_t params[3];
jit_type_t signature;
params[0] = jit_type_int;
params[1] = jit_type_int;
params[2] = jit_type_int;
signature = jit_type_create_signature
(jit_abi_cdecl, jit_type_int, params, 3, 1);
function = jit_function_create(context, signature);
jit_function_compile(function);
jit_context_build_end(context);
jit_int arg1, arg2, arg3;
void *args[3];
jit_int result;
arg1 = 3;
arg2 = 5;
arg3 = 2;
args[0] = &arg1;
args[1] = &arg2;
args[2] = &arg3;
jit_function_apply(function, args, &result);
printf("mul_add(3, 5, 2) = %d\n", (int)result);
}
看来比较老,它的 Ruby 绑定已经不支持最新的 MRI 2.6,最新的 MRI 已经不用 Fixnum 了
而且是老到 MRI 已经不向前兼容了...
而且是老到 MRI 已经不向前兼容了...
CRuby 的
看来 LibJIT 虽然曾经维护良好,但是比较老了,也缺少贡献者更新绑定
Feature #12005: Unify Fixnum and Bignum into Integer
Fixnum 和 Bignum 2.4 时早合并成 Integer 了 🙈看来 LibJIT 虽然曾经维护良好,但是比较老了,也缺少贡献者更新绑定
#ifndef RUBY_INTEGER_UNIFICATIONruby/ruby #ed75b6b Integer unification macro
RUBY_EXTERN VALUE rb_cFixnum;
#endif
Feature #12005: Unify Fixnum and Bignum into Integer
GitHub
Integer unification macro · ruby/ruby@c071c05
* include/ruby/ruby.h (RUBY_INTEGER_UNIFICATION): macro to tell if
Integer is integrated. [ruby-core:75718][Bug #12427]
* include/ruby/backward.h, internal.h (rb_cFixnum, rb_cBignum):
fallback...
Integer is integrated. [ruby-core:75718][Bug #12427]
* include/ruby/backward.h, internal.h (rb_cFixnum, rb_cBignum):
fallback...
sudo dnf install glibc-static
cd libjit可是 libc 不知为何无法静态链接.... 😶
./bootstrap
make
sudo make install
pushd tutorial
clang -o test t1.c -ljit
popd
https://t.me/dsuses/2280
Telegram
duangsues.is_a? SaltedFish
#include <stdio.h>
#include <jit/jit.h>
jit_context_t context;
int main(int argc, char **argv)
{
jit_type_t params[3];
jit_type_t signature;
jit_function_t function;
jit_value_t x, y, z;
jit_value_t temp1, temp2;
jit_int arg1,…
#include <jit/jit.h>
jit_context_t context;
int main(int argc, char **argv)
{
jit_type_t params[3];
jit_type_t signature;
jit_function_t function;
jit_value_t x, y, z;
jit_value_t temp1, temp2;
jit_int arg1,…
那为什么说我是“逆流而上“呢?#life #recommended #blog
很明显,在大家都疯了一般在学校里参加各种模拟测试时,我回家自学;在大家都去网吧,打游戏,谈恋爱,追电视剧时,我在写程序;大家都在参加各种比赛拿证的时候,我在社团泡着写程序;大家都在使用成熟框架写程序时,我不厌烦的去尝试自己实现基础功能。我看起来是最傻,最Low的那个臭屌丝,整天沉迷于好像没什么用的程序里,最后却比大多数嘲笑我的人跳的更高。
那为什么逆流的人很少能攀的更高呢?
逆流是一个非常危险的行为,如果把控不好方向很容易走歪。都听说过“博观而约取,厚积而薄发“,却很少有人懂得其本质。现在的人都太浮躁,被大量的毒鸡汤洗脑,希望能一夜成名。尤其是我们的同龄人和后辈,被现在一些不良之风带坏,梦想通过当网红打电竞一夜暴富,过上衣食无忧的生活;或者希望几年,几个月,甚至几周就精通一门专业技术,快速实现自己不切实际的梦想。无论是什么事,没有厚积,哪来的薄发!如果怀揣梦想,一定要脚踏实地的一步一个脚印去实现它,戒骄戒躁,才能有机会去实现它。
最后,任何一个人的成长道路都不是完全相同的,一定要结合自己的实际情况,选择适合自己的道路,并坚定的走下去。我相信任何人都能够逆流而上,活出自己的精彩。
"
谨以此文,纪念我18年的成长历程,送给我的学生,我的学弟学妹,我的后辈以及我自己,希望能够给更多的人启发而走出自己的道路。"来源请求?
另外 duangsuse 之前默写了一些语言名称 #PL #life
Lua C C++ C# Objective-C F# VisualC VisualBasic Basic JavaScript ActionScript Ruby Python Matlab Wolfram Octave Julia Java Kotlin Scala Clojure VHDL Prolog Algor96 Fortran Go
Perl Rust Swift Ada SmallTalk Logo Turtle Crystal Elvish EmacsLisp CommonLisp ChezScheme Racket Haskell Erlang Elixir Idris Dart COBOL Red
Tcl TypeScript RubyMotion Agda PHP REBOL Pascal Coq D OCaml ML Vala Squirrel GDScript
Lua C C++ C# Objective-C F# VisualC VisualBasic Basic JavaScript ActionScript Ruby Python Matlab Wolfram Octave Julia Java Kotlin Scala Clojure VHDL Prolog Algor96 Fortran Go
Perl Rust Swift Ada SmallTalk Logo Turtle Crystal Elvish EmacsLisp CommonLisp ChezScheme Racket Haskell Erlang Elixir Idris Dart COBOL Red
Tcl TypeScript RubyMotion Agda PHP REBOL Pascal Coq D OCaml ML Vala Squirrel GDScript
Forwarded from duangsuse Throws
; MoudleID = 'autumn.ll' 中秋节快乐!
source_filename = "autumn.ll"
@autumn = private constant [10 x i8] c"中秋节\00"
@happy = private constant [11 x i8] c"快乐!\0a\00"
; Function Attrs: noinline nounwind optnone
define i32 @main(i32 %argc, i8** %argv) #0 {
call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @autumn, i32 0, i32 0))
call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @happy, i32 0, i32 0))
call void @exit(i32 0)
unreachable
}
attributes #0 = { noinline nounwind optnone uwtable }
attributes #1 = { noreturn }
declare i32 @printf(i8*, ...)
; Function Attrs: noreturn
declare void @exit(i32) #1
(🙈 假装把这个当成自己的中秋节祝福
中秋节快乐哦,阖家团圆,幸福美满 🌕🍰