mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-16 12:24:03 +00:00
* Make pointer values work better by treating them uniformly as 64 bit values.
This causes code that is generated by gcc to work better. * Implement mul & div * Export malloc, free, and pow * add strtol, atoi, and atol to the runtime library git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@988 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -14,6 +14,7 @@
|
||||
#include <map>
|
||||
#include <dlfcn.h>
|
||||
#include <link.h>
|
||||
#include <math.h>
|
||||
|
||||
typedef GenericValue (*ExFunc)(MethodType *, const vector<GenericValue> &);
|
||||
static map<const Method *, ExFunc> Functions;
|
||||
@ -170,4 +171,25 @@ GenericValue lle_Vi_exit(MethodType *M, const vector<GenericValue> &Args) {
|
||||
return GenericValue();
|
||||
}
|
||||
|
||||
// void *malloc(uint)
|
||||
GenericValue lle_PI_malloc(MethodType *M, const vector<GenericValue> &Args) {
|
||||
GenericValue GV;
|
||||
GV.LongVal = (uint64_t)malloc(Args[0].UIntVal);
|
||||
return GV;
|
||||
}
|
||||
|
||||
// void free(void *)
|
||||
GenericValue lle_VP_free(MethodType *M, const vector<GenericValue> &Args) {
|
||||
free((void*)Args[0].LongVal);
|
||||
return GenericValue();
|
||||
}
|
||||
|
||||
// double pow(double, double)
|
||||
GenericValue lle_DDD_pow(MethodType *M, const vector<GenericValue> &Args) {
|
||||
GenericValue GV;
|
||||
GV.DoubleVal = pow(GV.DoubleVal, GV.DoubleVal);
|
||||
return GV;
|
||||
}
|
||||
|
||||
|
||||
} // End extern "C"
|
||||
|
Reference in New Issue
Block a user