-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
About foreign function interfaces #28
Comments
吼啊!资瓷!不过我们还是要解决见了鬼的数据访问接口/函数调用接口不是吗,我觉得啊,这些就声明一下可被外部调用就好啦,然后给他一个导出列表——就像DLL干的那样——这样子还能写成动态链接库? |
哦,导出的话只能写C风格~而且应该得暴露指针Orz |
QAQ你可以加个底层啊,就像v8干的那样子,要求用提供的(吹泡泡)库函数调用 |
这些东西我都还没看过呢,现在先把其他东西做完再说,我这只是说商量下声明方法。。。毕竟我这边就得 declare i32 @puts(i8*) #1 |
调用的时候还得自动隐式转换成一个本语言没有的概念 ; Function Attrs: noinline uwtable
define void @_Z4shitPKc(i8*) #0 {
%2 = alloca i8*, align 8
store i8* %0, i8** %2, align 8
%3 = load i8*, i8** %2, align 8
%4 = call i32 @puts(i8* %3)
ret void
} |
使用extern,然后可以把外部C和外部Cm统一起来 |
但是libc里面那些需要传入指针的东西咋整?Cm目前怎么处理数组和指针? |
要把libc包一层吗 |
那就包一层吧,把数组转换到指针。 |
但是我觉得应该泛化这个过程(因为libc又不仅仅有puts一个这种需要转指针的函数,而且用户可能需要静态链接一些其他的)。 |
如何设计ffi
我想到了用 extern 或者 foreign 来声明 然后在链接的时候解决
泥萌如何看待
The text was updated successfully, but these errors were encountered: