const DATA_DEFS: &str = include_str!("runtime/data_defs.s");
const PRINT_FUNCS: &str = include_str!("runtime/print.s");
const INPUT_FUNCS: &str = include_str!("runtime/input.s");
const STRING_FUNCS: &str = include_str!("runtime/string.s");
const MATH_FUNCS: &str = include_str!("runtime/math.s");
const DATA_FUNCS: &str = include_str!("runtime/data.s");
const FILE_FUNCS: &str = include_str!("runtime/file.s");
pub fn generate_runtime() -> String {
#[cfg(target_os = "macos")]
let libc_prefix = "_";
#[cfg(not(target_os = "macos"))]
let libc_prefix = "";
let mut output = String::new();
output.push_str("# BASIC Runtime Library\n");
output.push_str("# Uses libc for cross-platform compatibility\n");
output.push_str(".intel_syntax noprefix\n\n");
output.push_str(DATA_DEFS);
output.push_str("\n.text\n\n");
output.push_str(&PRINT_FUNCS.replace("{libc}", libc_prefix));
output.push('\n');
output.push_str(&INPUT_FUNCS.replace("{libc}", libc_prefix));
output.push('\n');
output.push_str(&STRING_FUNCS.replace("{libc}", libc_prefix));
output.push('\n');
output.push_str(&MATH_FUNCS.replace("{libc}", libc_prefix));
output.push('\n');
output.push_str(&DATA_FUNCS.replace("{libc}", libc_prefix));
output.push('\n');
output.push_str(&FILE_FUNCS.replace("{libc}", libc_prefix));
output.push('\n');
output
}