x86-64

    0

    1答えて

    私はqwordを持っています。それは4つの部分から成っています - それぞれ16ビット。 各パーツには構造があります。各パーツの最初のビットは1または0、その他はゼロです。 その最初のビットを、その16ビット要素で他のすべての位置にブロードキャストしたいとします。 x64のアセンブリで

    1

    1答えて

    私は、私たちがクラスでやっている単純な64ビットアセンブリプログラムを持っています。ユーザー入力(文字列)を取り、その文字列を小文字で大文字と大文字を小文字に変換します。 私が持っているものでは、スペースを見つけるまで何も読み込まれず、それ以降は読み込まれません。だから、 "test"を入力すると "TEST"が出力されます。 "test test"を入力すると "TEST"が出力されます。しかし

    1

    2答えて

    :私はレジスタ%eaxにはそれに値を持っていますが、-8(%のRBP)を知っている addl %eax, -8(%rbp) は、前の行にタッチされていません。空であると仮定して、%eax + 0の値を-8(%rbp)に入れるだけですか?

    1

    1答えて

    ディレクトリとファイルを作成するアセンブリコードを書きましたが、作成されましたが奇妙なアクセス許可があります。ディレクトリはdrwxrwxrwxで、ファイルは-r-xr-xr-xです。 私が試した限りでは、mode引数を変更すると、ファイルのアクセス許可が777に変更される可能性がありますが、変更方法と結果のパターンが見つかりません。 (それは777または555です)。 umaskは、0002に設

    -1

    1答えて

    スタックメモリアドレスをレジスタに格納しようとしています。要点は、3つの引数を取るアセンブリコードからc関数を呼び出すことです。 1)関数へのポインタ:私はleaq label(%rip), %rdi 2を使用して取得)INT:単純で、movq $2, %rsi 3)メモリアドレスへのポインタ:これはトリッキーな部分です。このアドレスはスタック位置2 = -16(%rsp)と言うことができます。

    2

    1答えて

    私はアセンブリを学んでいる間にカーネルの仕組みを学び、ブート可能なx86_64カーネルをうまく作成する方法を学ぶために、私は問題がありました: I 0xB8000のVGAバッファを使用して、 "main.c"(以下のすべてのファイル)にある関数を含むテキストを正常に出力しようとしました。これは、カーネルプロトタイプの32ビットバージョンと同じ方法ですが、開始ファイルが異なります。 ここで問題となる

    3

    1答えて

    Cの関数を入力すると、変数のスペースを作るのに十分なだけスタックポインタが減算される方法が分かります。 espがまだebpを指しているときに、変数のアドレスがebpを介して直接アクセスする方法のみを知ることができます。 push %rbp mov %rsp,%rbp movl $0x4,-0x4(%rbp) mov $0x0,%eax pop %rbp retq 私は多くの変数を作成

    0

    1答えて

    私は非常に混乱し、ブロックに当たっています。私のクラスの課題は、私が次のことをしていることです。 すべて大文字に入力 変換文字列 変換された文字列を持つユーザーに表示するメッセージ のプロンプトグリートユーザー Iは1と2とは問題を持っていない、必要なとき私は小文字を大文字に変換するループを理解することができます。 cmp $96, %ah jg Subtract call Loop Su

    2

    1答えて

    にアクセスすると、コマンドを使用して、私のMacコンピュータをオフこのコードを実行: nasm -f macho64 -o max.a maximum.asm これは私が配列内の最大数を見つけた私のコンピュータ上で実行しようとしていたコードです。 section .data data_items: dd 3,67,34,222,45,75,54,34,44,33,22,11,66