# 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 and OS X have been a little more challenging producing binaries, so I have switched to a source based installation.

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. The script is now a complete process on OS X. It will install the OS X command line tools, and complete the rest of the ebe installation.

OS X has been a difficult target for me to address, but it is now easy. I started with gdb there and only recently learned how to completely script the certificate/codesigning process. Then I discovered lldb-mi and used it. Recently lldb-mi was removed from Xcode and I switched to lldb. I have also tweaked the install script to make it easier and to produce a more complete log.

- Windows install exe
- Universal installation script
- SlackWare package Thank you, Ryan McQuen
- Getting ebe using git
- Getting ebe source as a gzipped tar file
- Outdated OS X instructions

## Links

- Change log
- Summary
- Files
- Reviews
- Browse git repo
- Bug reporting and tracking

## Features

- 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 or lldb 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
  - Alternatively you can use an external terminal
- 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/LLDB console
  - Shows the commands and data sent and received by ebe
  - Contains a text input box to allow interactive use of the debugger