|
- // Copyright 2018 Google Inc. All Rights Reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
-
- package main
-
- import "fmt"
-
- func main() {
- test(1, 2, 3)
- }
-
- // This is the function we examine. After the preamble its stack should be
- // pulled down 1*addrSize for the return PC plus 3*8 for the three
- // arguments. That will be (1+3)*8=32 on 64-bit machines.
- func test(a, b, c int64) int64 {
- // Put in enough code that it's not inlined.
- for a = 0; a < 100; a++ {
- b += c
- }
- afterTest(a, b, c)
- return b
- }
-
- // This function follows test in the binary. We use it to force arguments
- // onto the stack and as a delimiter in the text we scan in the test.
- func afterTest(a, b, c int64) {
- fmt.Println(a, b, c)
- }
|