#include "include/gravity/core.h" #include 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; }