ebe at SourceForge

What is ebe?

Ebe is an integrated development environment written in C++ using the Qt library for its GUI and portability tools. The primary reason to develop ebe was to support 64 bit assembly programming in support of my assembly language books. (see rayseyfarth.com)

Since it is important to learn how to connect assembly language with C in order to be more practical, it was necessary to support projects in ebe using assembly and C. Supporting C++ along with C is very little extra effort.

Installing ebe

There are perhaps two ways to install ebe on your computer: either as a pre-compiled program (binary distribution) or by downloading the source code and compiling it on your computer.

Binary distribution has worked well under Windows using InnoSetup.

Linux has been a little more challenging. I have had some help with Slackware systems and there is now a package available for Slackware which makes it easy to keep up-to-date.

I am hoping to get some help with Ubuntu and Fedora distributions. OS X has been a difficult target for me to address. Hopefully I will get volunteers for MacPorts and HomeBrew distributions.

I have prepared a fairly universal installation script which helps install ebe from scratch. This is recommended for installing and updating on Ubuntu, Fedora, PCBSD and OS X. It requires installing Xcode and MacPorts before running the script on OS X, but the others are simpler.


  • Integrated editor
  • Tooltips
  • Setup dialog
  • Supports assembly and C/C++
  • Template programs for each language
  • Integrated project management
  • Multiple dock widgets
    • Can be hidden/shown
    • Movable and stackable
    • Can be moved to be separate windows
    • Configuration is saved when the program exits
  • Internally uses gdb to debug
    • Debug buttons for run, next, step, continue and stop
    • Breakpoints set by clicking on line numbers
  • Register window
  • Floating point register window
  • High level language data window
    • Keeps a stack of local variables for each active function
    • Buttons (red triangles) to expand or collapse
    • User selectable format for each type
    • Floating point formats
      • decimal
      • sign bit : exponent field : fraction field
      • binary pattern like 1.0011 * 2**2 for 4.75
  • Assembly data window
    • Determines variables in .data and .bss using nm
    • Selectable formats like the high level data window
    • Can define variables from addresses
  • Stack frame window
    • Frame macro in assembly language
    • Displays stack-based parameters and local variables
    • Using frame macro simplifies function management
  • Terminal
    • Displays program output
    • Input through a text input field
  • HAL assembly macros
    • Uses more meaningful names for registers: scr1, par1, sav1, acc ...
    • Simplifies register usage
    • Makes more portable code (almost portable between Windows and Linux)
  • Library
    • HTML based information and code snippets
    • Documents common assembly instructions
  • Template toolbar
    • Easy insertion of common code snippets
    • Link to library
  • Toy box
    • Allows experimenting with expressions
    • Clicking on the "do it" button, builds a program, executes it and shows the result in a table
    • Results can be shown in multiple formats
    • C++
  • Bit bucket
    • Allows experimenting with low level details
    • Conversion between bases for integers
    • Conversion of floating point values
    • Demonstration of many unary and binary operations
  • Back trace window
    • Shows the results of the gdb backtrace command
    • This shows the sequence of active function calls and parameters
  • GDB console
    • Shows the commands and data sent and received by ebe
    • Contains a text input box to allow interactive use of gdb