New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@brecert/llvmir

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@brecert/llvmir

Construct LLVM-IR using pure javascript

  • 0.2.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

llvmir

[W.I.P] Construct LLVM-IR using pure javascript

Example

import { Module, Instructions, Values, Types, utils } from '@brecert/llvmir'

const module = new Module

// utils provides shorthands to a lot of instructions or functionality
const { i, sig } = utils

// create the type signature for the functions
// for more info please look at https://llvm.org/docs/LangRef.html#function-type
const fnMainSig = sig(i(32), [])
const fnMain = new Values.Function({
	name: 'main',
	signature: fnMainSig,
	argNames: []
})

// there's a lot of writing involved when writing instructions
// it's pretty easy to make a shorthand for a lot of them if utils doesn't already have one
const add = (left: Values.Integer, right: Values.Integer) => new Instructions.BinaryOperation('add', left.type, left, right)


// add the values 3 and 6 together
const sum = add(i(32).val(3), i(32).val(6))

// the block must have a terminator, so we will return the sum
// for more info please look at https://llvm.org/docs/LangRef.html#terminators
const ret = new Instructions.Ret(sum.type, sum)

// we will push the instructions the the functions main block
fnMain.body.push(sum, ret)

// we add the function to module
module.addFunction(fnMain)

// we build the module
// by default the module returns an array of the functions, so we join it here
module.build().join('\n')

should build something like

define i32 @main () {                                                                                                   bb1:
  %0 = add i32 3, 6
  ret i32 %0
}

Keywords

FAQs

Package last updated on 11 Aug 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc