私は今学期にコンピュータアーキテクチャコースを終えたところです。ここでは、とりわけ、MIPSアセンブリに手を出し、MARSシミュレータで実行しています。今日、好奇心から、UbuntuボックスでNASMをいじり始めました。基本的には、チュートリアルから物事をつなぎ合わせて、NASMがMIPSとどのように違うのかを感じ取っています。これが私が現在見ているコードスニペットです:
global _start
_start:
mov eax, 4
mov ebx, 1
pop ecx
pop ecx
pop ecx
mov edx, 200
int 0x80
mov eax, 1
mov ebx, 0
int 0x80
これはtest.asmとして保存され、とアセンブルnasm -f elf test.asm
およびリンクされld -o test test.o
ます。を使用して呼び出すと./test anArgument
、期待どおりに'anArgument'が出力され、その後に、その文字列を合計200文字まで埋めるのに必要な文字数が続きます(そのmov edx, 200
ステートメントのため)。ただし、興味深いのは、これらのパディング文字は、env
コマンドで表示されるように、実際には環境変数の最初からのものであるということです。なぜこれが私の環境変数を出力するのですか?