mirror of
https://github.com/kmc7468/cs420.git
synced 2025-12-15 23:18:48 +00:00
Update skeleton
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
int nonce = 0; // For random input
|
int nonce = 1; // For random input
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
int i;
|
int i;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
int nonce = 0; // For random input
|
int nonce = 1; // For random input
|
||||||
|
|
||||||
int fibonacci(int n) {
|
int fibonacci(int n) {
|
||||||
if (n < 2) {
|
if (n < 2) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
int nonce = 0; // For random input
|
int nonce = 1; // For random input
|
||||||
int g = 10;
|
int g = 10;
|
||||||
|
|
||||||
int foo(int, int k);
|
int foo(int, int k);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
int nonce = 0; // For random input
|
int nonce = 1; // For random input
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
int nonce = 0; // For random input
|
int nonce = 1; // For random input
|
||||||
|
|
||||||
int foo() {
|
int foo() {
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @fibonacci (i32) {
|
fun i32 @fibonacci (i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var i32 @g = 10
|
var i32 @g = 10
|
||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @foo (i32, i32) {
|
fun i32 @foo (i32, i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @foo () {
|
fun i32 @foo () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @fibonacci (i32) {
|
fun i32 @fibonacci (i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var i32 @g = 10
|
var i32 @g = 10
|
||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @foo (i32, i32) {
|
fun i32 @foo (i32, i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @foo () {
|
fun i32 @foo () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @fibonacci (i32) {
|
fun i32 @fibonacci (i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var i32 @g = 10
|
var i32 @g = 10
|
||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @foo (i32, i32) {
|
fun i32 @foo (i32, i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @foo () {
|
fun i32 @foo () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @fibonacci (i32) {
|
fun i32 @fibonacci (i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var i32 @g = 10
|
var i32 @g = 10
|
||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @foo (i32, i32) {
|
fun i32 @foo (i32, i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @foo () {
|
fun i32 @foo () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @fibonacci (i32) {
|
fun i32 @fibonacci (i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var i32 @g = 10
|
var i32 @g = 10
|
||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @foo (i32, i32) {
|
fun i32 @foo (i32, i32) {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @main () {
|
fun i32 @main () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var i32 @nonce = 0
|
var i32 @nonce = 1
|
||||||
|
|
||||||
fun i32 @foo () {
|
fun i32 @foo () {
|
||||||
init:
|
init:
|
||||||
|
|||||||
@@ -523,6 +523,8 @@ pub enum UType {
|
|||||||
/// https://riscv.org/specifications/isa-spec-pdf/ (139p)
|
/// https://riscv.org/specifications/isa-spec-pdf/ (139p)
|
||||||
#[derive(Debug, Clone, PartialEq)]
|
#[derive(Debug, Clone, PartialEq)]
|
||||||
pub enum Pseudo {
|
pub enum Pseudo {
|
||||||
|
/// la rd, symbol
|
||||||
|
La { rd: Register, symbol: Label },
|
||||||
/// li rd, immediate
|
/// li rd, immediate
|
||||||
Li {
|
Li {
|
||||||
rd: Register,
|
rd: Register,
|
||||||
|
|||||||
@@ -384,6 +384,7 @@ impl WriteString for UType {
|
|||||||
impl WriteString for Pseudo {
|
impl WriteString for Pseudo {
|
||||||
fn write_string(&self) -> String {
|
fn write_string(&self) -> String {
|
||||||
match self {
|
match self {
|
||||||
|
Self::La { rd, symbol } => format!("la\t{},{}", rd.write_string(), symbol.0),
|
||||||
Self::Li { rd, imm } => format!("li\t{},{}", rd.write_string(), *imm as i64),
|
Self::Li { rd, imm } => format!("li\t{},{}", rd.write_string(), *imm as i64),
|
||||||
Self::Mv { rd, rs } => format!("mv\t{},{}", rd.write_string(), rs.write_string()),
|
Self::Mv { rd, rs } => format!("mv\t{},{}", rd.write_string(), rs.write_string()),
|
||||||
Self::Fmv { data_size, rd, rs } => format!(
|
Self::Fmv { data_size, rd, rs } => format!(
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ fn modify_c(path: &Path, rand_num: i32) -> String {
|
|||||||
.expect("`src` must be converted to string");
|
.expect("`src` must be converted to string");
|
||||||
drop(src);
|
drop(src);
|
||||||
|
|
||||||
let from = format!("int {} = 0", NONCE_NAME);
|
let from = format!("int {} = 1", NONCE_NAME);
|
||||||
let to = format!("int {} = {}", NONCE_NAME, rand_num);
|
let to = format!("int {} = {}", NONCE_NAME, rand_num);
|
||||||
data.replace(&from, &to)
|
data.replace(&from, &to)
|
||||||
}
|
}
|
||||||
@@ -107,7 +107,6 @@ pub fn test_irgen(path: &Path) {
|
|||||||
let rand_num = rand::thread_rng().gen();
|
let rand_num = rand::thread_rng().gen();
|
||||||
let new_c = modify_c(path, rand_num);
|
let new_c = modify_c(path, rand_num);
|
||||||
modify_ir(&mut ir, rand_num);
|
modify_ir(&mut ir, rand_num);
|
||||||
println!("{}", new_c);
|
|
||||||
|
|
||||||
// compile recolved c example
|
// compile recolved c example
|
||||||
let temp_dir = tempdir().expect("temp dir creation failed");
|
let temp_dir = tempdir().expect("temp dir creation failed");
|
||||||
|
|||||||
Reference in New Issue
Block a user