x64: remove fn arg test for now
							parent
							
								
									ebc41375f1
								
							
						
					
					
						commit
						8cb88d5c9a
					
				| 
						 | 
					@ -332,6 +332,13 @@ pub fn (mut g Gen) sub32(reg Register, val int) {
 | 
				
			||||||
	g.write32(val)
 | 
						g.write32(val)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub fn (mut g Gen) add(reg Register, val int) {
 | 
				
			||||||
 | 
						g.write8(0x48)
 | 
				
			||||||
 | 
						g.write8(0x81)
 | 
				
			||||||
 | 
						g.write8(0xe8 + reg) // TODO rax is different?
 | 
				
			||||||
 | 
						g.write32(val)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn (mut g Gen) leave() {
 | 
					fn (mut g Gen) leave() {
 | 
				
			||||||
	g.write8(0xc9)
 | 
						g.write8(0xc9)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -617,7 +624,7 @@ fn (mut g Gen) fn_decl(node ast.FnDecl) {
 | 
				
			||||||
		// g.write32(SEVENS)
 | 
							// g.write32(SEVENS)
 | 
				
			||||||
		g.push(.rbp)
 | 
							g.push(.rbp)
 | 
				
			||||||
		g.mov_rbp_rsp()
 | 
							g.mov_rbp_rsp()
 | 
				
			||||||
		// g.sub32(.rsp, 0x10)
 | 
							g.sub32(.rsp, 0x20)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if node.args.len > 0 {
 | 
						if node.args.len > 0 {
 | 
				
			||||||
		// g.mov(.r12, 0x77777777)
 | 
							// g.mov(.r12, 0x77777777)
 | 
				
			||||||
| 
						 | 
					@ -640,7 +647,9 @@ fn (mut g Gen) fn_decl(node ast.FnDecl) {
 | 
				
			||||||
		// return
 | 
							// return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if !is_main {
 | 
						if !is_main {
 | 
				
			||||||
		g.leave() // g.pop(.rbp)
 | 
							g.leave()
 | 
				
			||||||
 | 
							// g.add(.rsp, 0x20)
 | 
				
			||||||
 | 
							// g.pop(.rbp)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	g.ret()
 | 
						g.ret()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,6 +46,6 @@ fn args() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn main() {
 | 
					fn main() {
 | 
				
			||||||
	test()
 | 
						test()
 | 
				
			||||||
	loop()
 | 
						//loop()
 | 
				
			||||||
	args()
 | 
						args()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,8 +6,3 @@ hello
 | 
				
			||||||
hello
 | 
					hello
 | 
				
			||||||
hello
 | 
					hello
 | 
				
			||||||
hello
 | 
					hello
 | 
				
			||||||
===args===
 | 
					 | 
				
			||||||
foo
 | 
					 | 
				
			||||||
foo(1)
 | 
					 | 
				
			||||||
foo(2)
 | 
					 | 
				
			||||||
foo
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -56,6 +56,7 @@ fn test_perform_speak() {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
interface Speak2er {
 | 
					interface Speak2er {
 | 
				
			||||||
| 
						 | 
					@ -92,4 +93,3 @@ fn test_register() {
 | 
				
			||||||
	handle_reg(f)
 | 
						handle_reg(f)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue