Files
Gravity/test.c

40 lines
1.5 KiB
C

#include "include/gravity/core.h"
#include <stdio.h>
int main(void) {
// define program
GravityModule module = gravityCreateModule();
GravityBuilder builder = gravityCreateBuilder();
GravityType charType = gravityCreateIntegerType(8, false);
GravityType mainFuncType = gravityCreateFunctionType(0, NULL, charType);
GravityFunction mainFunc = gravityNewFunction(module, "main", mainFuncType);
GravityBlock entryBlock = gravityStartBlock("entry", mainFunc);
GravityBlock thenBlock = gravityStartBlock("then", mainFunc);
GravityBlock elseBlock = gravityStartBlock("else", mainFunc);
GravityBlock mergeBlock = gravityStartBlock("merge", mainFunc);
gravityBuilderSwitchToBlock(builder, entryBlock);
GravityValue oneConst = gravityNewIntConstant(charType, 1);
gravityBuildBr(builder, oneConst, thenBlock, (GravityValue[]){}, elseBlock, (GravityValue[]){});
gravityBuilderSwitchToBlock(builder, thenBlock);
gravityBuildJump(builder, mergeBlock, (GravityValue[]){});
gravityBuilderSwitchToBlock(builder, elseBlock);
gravityBuildJump(builder, mergeBlock, (GravityValue[]){});
gravityBuilderSwitchToBlock(builder, mergeBlock);
gravityBuildRet(builder, NULL);
gravityCompleteFunction(mainFunc);
printf("%s\n", gravityFunctionToCStr(mainFunc));
GravityTargetArch target = gravityCreate_x86_64Target();
char* outputASM = gravityTargetEmitModule(target, module);
printf("%s\n", outputASM);
return 0;
}