Skip to content

Instantly share code, notes, and snippets.

Zoxc

Block or report user

Report or block Zoxc

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@Zoxc
Zoxc / gist:2b50c3897e9cb1883d07
Last active Aug 29, 2015
Value type parameters
View gist:2b50c3897e9cb1883d07
  • Start Date: 2014-07-20
  • RFC PR #: (leave this empty)
  • Rust Issue #: (leave this empty)

Summary

Values should be able to be passed as type parameters. The [T, ..n] fixed length array should be changed to use a value as a type parameter.

Motivation

View gist:2a69723a14704db3d50f
  • Start Date: 2014-07-21
  • RFC PR #: (leave this empty)
  • Rust Issue #: (leave this empty)

Summary

This adds the ability to refer to fields of types and use them later on with objects of that type. The FieldOffset<Obj, Field> type is added which refers to fields of type Field in the object Obj. The offsetof Type.field syntax is defined to construct instances of FieldOffset<Type, the type of field>.

View gist:44f0e0d3519fcfbcd35d
  • Start Date: 2014-07-22
  • RFC PR #: (leave this empty)
  • Rust Issue #: (leave this empty)

Summary

This adds the ability to have macros in type signatures.

Motivation

@Zoxc
Zoxc / nicer.ll
Created Jul 27, 2015
LLVM codegen
View nicer.ll
; ModuleID = 'nicer.ll'
target datalayout = "e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define i8 @test({ i8*, i64 } %arg, i64 %arg1) unnamed_addr {
"the block":
%tmp = extractvalue { i8*, i64 } %arg, 1
%tmp2 = icmp ugt i64 %tmp, %arg1
br i1 %tmp2, label %exit, label %cond.i
View patchpoint.ll
; ModuleID = 'bugpoint-reduced-simplified.bc'
target datalayout = "e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
; Function Attrs: noreturn
declare void @fail()
declare void @llvm.experimental.patchpoint.void(i64, i32, i8*, i32, ...)
define void @test() {
View Control flow integrity and dynamic linking plot
All code is shared between processes. Processes can not read or write to the code segment.
The global code segment is 2 TB. It is split into 1MB blocks, giving 2M blocks in total.
A module is a executable or shared library.
Each process has an bitmap where each bit represents a block of code of the code segment.
With 1 bit per block means the size of the array is 256KB.
If a bit is 0, the process does not have access to the block in the code segment.
View portal.c
#include <stdbool.h>
/*
* Dummy typedefs for types used.
*/
typedef int event_t;
typedef int message_t;
/*
* Prototype for event functions.
View gist:469759
#include <stdio.h>
#include <math.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include "swl.h"
#include "gles.hpp"
#include "OpenGL.Texture.hpp"
#include <ft2build.h>
#include FT_FREETYPE_H
View BitClass.pas
unit BitClass;
interface
uses SysUtils;
type
Bit = 0..7;
BitByte = set of Bit;
@Zoxc
Zoxc / gist:2467851
Created Apr 23, 2012
Mirb Exception Reporting
View gist:2467851
> tap { raise "hi" }
RuntimeError: hi
in main.Kernel(Object)#raise("hi")
in main.#<Class:main>(Object)#main(main)
Input:1: tap { raise "hi" }
~~~~~~~~~~
in #<Proc:0x4c2048>.Proc#call(main)
in main.Object#tap()
in main.#<Class:main>(Object)#main()
You can’t perform that action at this time.