From 78739e388a2a6f95e80988335543e7cddfa98eb4 Mon Sep 17 00:00:00 2001 From: Roy Qu Date: Tue, 28 Feb 2023 10:49:50 +0800 Subject: [PATCH] - enhancement: Add "Languages" page group in the options dialog. - enhancement: Add "ASM Generation" page in the options dialog. - change: Move "Custom C/C++ keywords" from group "Editor" to "Lanauges" in the options dialog. - change: Rename "Folder" page to "Folder / Reset default settings" in the options dialog. - enhancement: Generate asm with/without SEH directives. - enhancement: Generate asm using intel style/att style. - enhancement: make description for jump/cmov/setb instructions more explicit. (used for signed or unsigned) --- NEWS.md | 7 + RedPandaIDE/RedPandaIDE.pro | 3 + RedPandaIDE/compiler/filecompiler.cpp | 13 +- RedPandaIDE/editor.cpp | 3 +- RedPandaIDE/settings.cpp | 52 +- RedPandaIDE/settings.h | 49 +- .../languageasmgenerationwidget.cpp | 55 + .../languageasmgenerationwidget.h | 27 + .../languageasmgenerationwidget.ui | 84 + .../projectcompileparamaterswidget.h | 1 - RedPandaIDE/settingsdialog/settingsdialog.cpp | 22 +- RedPandaIDE/translations/RedPandaIDE_pt_BR.ts | 41 +- RedPandaIDE/translations/RedPandaIDE_zh_CN.ts | 1007 ++--- RedPandaIDE/translations/RedPandaIDE_zh_TW.ts | 43 +- libs/qsynedit/qsynedit/syntaxer/asm.cpp | 14 +- libs/qsynedit/qsynedit_zh_CN.ts | 3349 ++++++++--------- 16 files changed, 2514 insertions(+), 2256 deletions(-) create mode 100644 RedPandaIDE/settingsdialog/languageasmgenerationwidget.cpp create mode 100644 RedPandaIDE/settingsdialog/languageasmgenerationwidget.h create mode 100644 RedPandaIDE/settingsdialog/languageasmgenerationwidget.ui diff --git a/NEWS.md b/NEWS.md index 79cf5238..59bb0b3e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -14,6 +14,13 @@ Red Panda C++ Version 2.15 - enhancement: Show descriptions mouse tip for assebmly instructions. (editor / cpu info dialog) - fix: When completing resigter names, an extra '%' is wrongly added. - enhancement: Syntax check for assembly files. + - enhancement: Add "Languages" page group in the options dialog. + - enhancement: Add "ASM Generation" page in the options dialog. + - change: Move "Custom C/C++ keywords" from group "Editor" to "Lanauges" in the options dialog. + - change: Rename "Folder" page to "Folder / Reset default settings" in the options dialog. + - enhancement: Generate asm with/without SEH directives. + - enhancement: Generate asm using intel style/att style. + - enhancement: make description for jump/cmov/setb instructions more explicit. (used for signed or unsigned) Red Panda C++ Version 2.14 diff --git a/RedPandaIDE/RedPandaIDE.pro b/RedPandaIDE/RedPandaIDE.pro index 108b50a9..7b8574fb 100644 --- a/RedPandaIDE/RedPandaIDE.pro +++ b/RedPandaIDE/RedPandaIDE.pro @@ -127,6 +127,7 @@ SOURCES += \ settingsdialog/environmentshortcutwidget.cpp \ settingsdialog/executorproblemsetwidget.cpp \ settingsdialog/formattergeneralwidget.cpp \ + settingsdialog/languageasmgenerationwidget.cpp \ settingsdialog/projectcompileparamaterswidget.cpp \ settingsdialog/projectcompilerwidget.cpp \ settingsdialog/projectdirectorieswidget.cpp \ @@ -262,6 +263,7 @@ HEADERS += \ settingsdialog/environmentshortcutwidget.h \ settingsdialog/executorproblemsetwidget.h \ settingsdialog/formattergeneralwidget.h \ + settingsdialog/languageasmgenerationwidget.h \ settingsdialog/projectcompileparamaterswidget.h \ settingsdialog/projectcompilerwidget.h \ settingsdialog/projectdirectorieswidget.h \ @@ -369,6 +371,7 @@ FORMS += \ settingsdialog/environmentshortcutwidget.ui \ settingsdialog/executorproblemsetwidget.ui \ settingsdialog/formattergeneralwidget.ui \ + settingsdialog/languageasmgenerationwidget.ui \ settingsdialog/projectcompileparamaterswidget.ui \ settingsdialog/projectcompilerwidget.ui \ settingsdialog/projectdirectorieswidget.ui \ diff --git a/RedPandaIDE/compiler/filecompiler.cpp b/RedPandaIDE/compiler/filecompiler.cpp index 3c5a1956..3ddf3045 100644 --- a/RedPandaIDE/compiler/filecompiler.cpp +++ b/RedPandaIDE/compiler/filecompiler.cpp @@ -49,7 +49,8 @@ bool FileCompiler::prepareForCompile() break; case CppCompileType::GenerateAssemblyOnly: stage = Settings::CompilerSet::CompilationStage::CompilationProperOnly; - compilerSet()->setCompileOption(CC_CMD_OPT_DEBUG_INFO,COMPILER_OPTION_OFF); + if (pSettings->languages().noDebugDirectivesWhenGenerateASM()) + compilerSet()->setCompileOption(CC_CMD_OPT_DEBUG_INFO,COMPILER_OPTION_OFF); break; default: stage = oldStage; @@ -65,7 +66,7 @@ bool FileCompiler::prepareForCompile() log(tr("- Compiler Set Name: %1").arg(compilerSet()->name())); log(""); FileType fileType = getFileType(mFilename); - mArguments= QString(" \"%1\"").arg(mFilename); + mArguments = QString(" \"%1\"").arg(mFilename); if (!mOnlyCheckSyntax) { switch(compilerSet()->compilationStage()) { case Settings::CompilerSet::CompilationStage::PreprocessingOnly: @@ -86,6 +87,14 @@ bool FileCompiler::prepareForCompile() mArguments+=QString(" -o \"%1\"").arg(mOutputFile); +#if defined(ARCH_X86_64) || defined(ARCH_X86) + if (mCompileType == CppCompileType::GenerateAssemblyOnly) { + if (pSettings->languages().noSEHDirectivesWhenGenerateASM()) + mArguments+=" -fno-asynchronous-unwind-tables"; + if (pSettings->languages().x86DialectOfASMGenerated()==Settings::Languages::X86ASMDialect::Intel) + mArguments+=" -masm=intel"; + } +#endif //remove the old file if it exists QFile outputFile(mOutputFile); if (outputFile.exists()) { diff --git a/RedPandaIDE/editor.cpp b/RedPandaIDE/editor.cpp index 8fb6170b..6a3be7ee 100644 --- a/RedPandaIDE/editor.cpp +++ b/RedPandaIDE/editor.cpp @@ -3345,8 +3345,9 @@ void Editor::showCompletion(const QString& preWord,bool autoComplete, CodeComple keywords = QSynedit::ASMSyntaxer::ATTDirectives; else if (word.startsWith("%")) keywords = QSynedit::ASMSyntaxer::ATTRegisters; - else + else { keywords = QSynedit::ASMSyntaxer::InstructionNames; + } } else { int pos = word.lastIndexOf("."); if (pos>=0) { diff --git a/RedPandaIDE/settings.cpp b/RedPandaIDE/settings.cpp index 448c948d..e0a3fce6 100644 --- a/RedPandaIDE/settings.cpp +++ b/RedPandaIDE/settings.cpp @@ -49,7 +49,7 @@ Settings::Settings(const QString &filename): mCodeFormatter(this), mUI(this), mVCS(this), - mExtTools(this) + mLanguages(this) { //load(); } @@ -113,7 +113,7 @@ void Settings::load() mUI.load(); mDirs.load(); mVCS.load(); - mExtTools.load(); + mLanguages.load(); } Settings::Dirs &Settings::dirs() @@ -146,9 +146,9 @@ QString Settings::filename() const return mFilename; } -Settings::ExtTools &Settings::extTools() +Settings::Languages &Settings::languages() { - return mExtTools; + return mLanguages; } Settings::CodeCompletion& Settings::codeCompletion() @@ -5831,27 +5831,51 @@ void Settings::VCS::detectGitInPath() } } -const QString &Settings::ExtTools::xMakePath() const +Settings::Languages::Languages(Settings *settings): + _Base(settings,SETTING_LANGUAGES) { - return mXMakePath; } -void Settings::ExtTools::setXMakePath(const QString &newXMakePath) +Settings::Languages::X86ASMDialect Settings::Languages::x86DialectOfASMGenerated() const { - mXMakePath = newXMakePath; + return mX86DialectOfASMGenerated; } -void Settings::ExtTools::doSave() +void Settings::Languages::setX86DialectOfASMGenerated(X86ASMDialect newX86DialectOfASMGenerated) { - saveValue("xmake_path", mXMakePath); + mX86DialectOfASMGenerated = newX86DialectOfASMGenerated; } -void Settings::ExtTools::doLoad() +void Settings::Languages::doSave() { - mXMakePath=stringValue("xmake_path",""); + saveValue("no_debug_directives_when_generate_asm",mNoDebugDirectivesWhenGenerateASM); + saveValue("no_seh_directives_when_generate_asm",mNoSEHDirectivesWhenGenerateASM); + saveValue("x86_dialect_of_asm_generated",(int)mX86DialectOfASMGenerated); } -Settings::ExtTools::ExtTools(Settings *settings):_Base(settings, SETTING_EXTTOOLS) +void Settings::Languages::doLoad() { - + mNoDebugDirectivesWhenGenerateASM = boolValue("no_debug_directives_when_generate_asm",true); + mNoSEHDirectivesWhenGenerateASM = boolValue("no_seh_directives_when_generate_asm",false); + mX86DialectOfASMGenerated = (X86ASMDialect)intValue("x86_dialect_of_asm_generated",(int)X86ASMDialect::ATT); +} + +bool Settings::Languages::noSEHDirectivesWhenGenerateASM() const +{ + return mNoSEHDirectivesWhenGenerateASM; +} + +void Settings::Languages::setNoSEHDirectivesWhenGenerateASM(bool newNoSEHDirectivesWhenGenerateASM) +{ + mNoSEHDirectivesWhenGenerateASM = newNoSEHDirectivesWhenGenerateASM; +} + +bool Settings::Languages::noDebugDirectivesWhenGenerateASM() const +{ + return mNoDebugDirectivesWhenGenerateASM; +} + +void Settings::Languages::setNoDebugDirectivesWhenGenerateASM(bool newNoDebugDirectivesWhenGenerateASM) +{ + mNoDebugDirectivesWhenGenerateASM = newNoDebugDirectivesWhenGenerateASM; } diff --git a/RedPandaIDE/settings.h b/RedPandaIDE/settings.h index b6fea550..a6c0aa06 100644 --- a/RedPandaIDE/settings.h +++ b/RedPandaIDE/settings.h @@ -37,10 +37,10 @@ #define SETTING_ENVIRONMENT "Environment" #define SETTING_EXECUTOR "Executor" #define SETTING_DEBUGGER "Debugger" -#define SETTING_EXTTOOLS "ExtTools" #define SETTING_HISTORY "History" #define SETTING_UI "UI" #define SETTING_VCS "VCS" +#define SETTING_LANGUAGES "Languages" #define SETTING_CODE_COMPLETION "CodeCompletion" #define SETTING_CODE_FORMATTER "CodeFormatter" #define SETTING_COMPILTER_SETS "CompilerSets" @@ -975,6 +975,31 @@ public: void doLoad() override; }; + class Languages: public _Base { + public: + enum class X86ASMDialect { + ATT, + Intel + }; + explicit Languages(Settings *settings); + bool noDebugDirectivesWhenGenerateASM() const; + void setNoDebugDirectivesWhenGenerateASM(bool newNoDebugDirectivesWhenGenerateASM); + + bool noSEHDirectivesWhenGenerateASM() const; + void setNoSEHDirectivesWhenGenerateASM(bool newNoSEHDirectivesWhenGenerateASM); + + X86ASMDialect x86DialectOfASMGenerated() const; + void setX86DialectOfASMGenerated(X86ASMDialect newX86DialectOfASMGenerated); + + private: + bool mNoDebugDirectivesWhenGenerateASM; + bool mNoSEHDirectivesWhenGenerateASM; + X86ASMDialect mX86DialectOfASMGenerated; + protected: + void doSave() override; + void doLoad() override; + }; + class UI: public _Base { public: explicit UI(Settings *settings); @@ -1271,22 +1296,6 @@ public: void doLoad() override; }; - class ExtTools: public _Base { - public: - explicit ExtTools(Settings* settings); - - const QString &xMakePath() const; - void setXMakePath(const QString &newXMakePath); - - private: - QString mXMakePath; - // _Base interface - protected: - void doSave() override; - void doLoad() override; - }; - - class CompilerSet { public: enum class CompilationStage { @@ -1531,10 +1540,9 @@ public: CodeFormatter &codeFormatter(); UI &ui(); VCS &vcs(); - ExtTools &extTools(); + Languages &languages(); QString filename() const; - private: QString mFilename; QSettings mSettings; @@ -1548,8 +1556,7 @@ private: CodeFormatter mCodeFormatter; UI mUI; VCS mVCS; - ExtTools mExtTools; - + Languages mLanguages; }; diff --git a/RedPandaIDE/settingsdialog/languageasmgenerationwidget.cpp b/RedPandaIDE/settingsdialog/languageasmgenerationwidget.cpp new file mode 100644 index 00000000..5291bd05 --- /dev/null +++ b/RedPandaIDE/settingsdialog/languageasmgenerationwidget.cpp @@ -0,0 +1,55 @@ +#include "languageasmgenerationwidget.h" +#include "ui_languageasmgenerationwidget.h" +#include "../settings.h" + +LanguageAsmGenerationWidget::LanguageAsmGenerationWidget(const QString &name, const QString &group, QWidget *parent) : + SettingsWidget(name,group,parent), + ui(new Ui::LanguageAsmGenerationWidget) +{ + ui->setupUi(this); +#ifndef Q_OS_WIN + ui->chkNoSEHDirectives->setVisible(false); +#endif +#if !defined(ARCH_X86_64) && !defined(ARCH_X86) + ui->grpX86Syntax->setVisible(false); +#endif +} + +LanguageAsmGenerationWidget::~LanguageAsmGenerationWidget() +{ + delete ui; +} + +void LanguageAsmGenerationWidget::doLoad() +{ + ui->chkNoDebugDirectives->setChecked(pSettings->languages().noDebugDirectivesWhenGenerateASM()); +#ifdef Q_OS_WIN + ui->chkNoSEHDirectives->setChecked(pSettings->languages().noSEHDirectivesWhenGenerateASM()); +#endif +#if defined(ARCH_X86_64) || defined(ARCH_X86) + switch(pSettings->languages().x86DialectOfASMGenerated()) { + case Settings::Languages::X86ASMDialect::ATT: + ui->rbATT->setChecked(true); + break; + case Settings::Languages::X86ASMDialect::Intel: + ui->rbIntel->setChecked(true); + break; + } +#endif +} + +void LanguageAsmGenerationWidget::doSave() +{ + pSettings->languages().setNoDebugDirectivesWhenGenerateASM(ui->chkNoDebugDirectives->isChecked()); +#ifdef Q_OS_WIN + pSettings->languages().setNoSEHDirectivesWhenGenerateASM(ui->chkNoSEHDirectives->isChecked()); +#endif +#if defined(ARCH_X86_64) || defined(ARCH_X86) + if (ui->rbATT->isChecked()) { + pSettings->languages().setX86DialectOfASMGenerated(Settings::Languages::X86ASMDialect::ATT); + } else { + pSettings->languages().setX86DialectOfASMGenerated(Settings::Languages::X86ASMDialect::Intel); + } +#endif + pSettings->languages().save(); +} diff --git a/RedPandaIDE/settingsdialog/languageasmgenerationwidget.h b/RedPandaIDE/settingsdialog/languageasmgenerationwidget.h new file mode 100644 index 00000000..65d88c9f --- /dev/null +++ b/RedPandaIDE/settingsdialog/languageasmgenerationwidget.h @@ -0,0 +1,27 @@ +#ifndef LANGUAGEASMGENERATIONWIDGET_H +#define LANGUAGEASMGENERATIONWIDGET_H + +#include "settingswidget.h" + +namespace Ui { +class LanguageAsmGenerationWidget; +} + +class LanguageAsmGenerationWidget : public SettingsWidget +{ + Q_OBJECT + +public: + explicit LanguageAsmGenerationWidget(const QString& name, const QString& group, QWidget *parent = nullptr); + ~LanguageAsmGenerationWidget(); + +private: + Ui::LanguageAsmGenerationWidget *ui; + + // SettingsWidget interface +protected: + void doLoad() override; + void doSave() override; +}; + +#endif // LANGUAGEASMGENERATIONWIDGET_H diff --git a/RedPandaIDE/settingsdialog/languageasmgenerationwidget.ui b/RedPandaIDE/settingsdialog/languageasmgenerationwidget.ui new file mode 100644 index 00000000..6c4b8cc2 --- /dev/null +++ b/RedPandaIDE/settingsdialog/languageasmgenerationwidget.ui @@ -0,0 +1,84 @@ + + + LanguageAsmGenerationWidget + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + Don't generate debug directives + + + + + + + Don't generate SEH directives + + + + + + + Instruction syntax: + + + + + + AT&&T + + + + + + + Intel + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/RedPandaIDE/settingsdialog/projectcompileparamaterswidget.h b/RedPandaIDE/settingsdialog/projectcompileparamaterswidget.h index c7665b30..c60a950e 100644 --- a/RedPandaIDE/settingsdialog/projectcompileparamaterswidget.h +++ b/RedPandaIDE/settingsdialog/projectcompileparamaterswidget.h @@ -17,7 +17,6 @@ #ifndef PROJECTCOMPILEPARAMATERSWIDGET_H #define PROJECTCOMPILEPARAMATERSWIDGET_H -#include #include "settingswidget.h" namespace Ui { diff --git a/RedPandaIDE/settingsdialog/settingsdialog.cpp b/RedPandaIDE/settingsdialog/settingsdialog.cpp index c2b4e763..58162751 100644 --- a/RedPandaIDE/settingsdialog/settingsdialog.cpp +++ b/RedPandaIDE/settingsdialog/settingsdialog.cpp @@ -39,6 +39,7 @@ #include "executorproblemsetwidget.h" #include "debuggeneralwidget.h" #include "formattergeneralwidget.h" +#include "languageasmgenerationwidget.h" #include "projectgeneralwidget.h" #include "projectfileswidget.h" #include "projectcompilerwidget.h" @@ -149,13 +150,6 @@ PSettingsDialog SettingsDialog::optionDialog() widget = new EnvironmentShortcutWidget(tr("Shortcuts"),tr("Environment")); dialog->addWidget(widget); - widget = new EnvironmentFoldersWidget(tr("Folders"),tr("Environment")); - connect((EnvironmentFoldersWidget*)widget, - &EnvironmentFoldersWidget::shouldQuitApp, - dialog.get(), - &SettingsDialog::closeAndQuit); - dialog->addWidget(widget); - #ifdef Q_OS_LINUX widget = new EnvironmentProgramsWidget(tr("Terminal"),tr("Environment")); dialog->addWidget(widget); @@ -164,6 +158,13 @@ PSettingsDialog SettingsDialog::optionDialog() widget = new EnvironmentPerformanceWidget(tr("Performance"),tr("Environment")); dialog->addWidget(widget); + widget = new EnvironmentFoldersWidget(tr("Folders / Restore Default Settings"),tr("Environment")); + connect((EnvironmentFoldersWidget*)widget, + &EnvironmentFoldersWidget::shouldQuitApp, + dialog.get(), + &SettingsDialog::closeAndQuit); + dialog->addWidget(widget); + widget = new CompilerSetOptionWidget(tr("Compiler Set"),tr("Compiler")); dialog->addWidget(widget); @@ -200,10 +201,13 @@ PSettingsDialog SettingsDialog::optionDialog() widget = new EditorAutoSaveWidget(tr("Auto save"),tr("Editor")); dialog->addWidget(widget); - widget = new EditorCustomCTypeKeywordsWidget(tr("Custom C/C++ Keywords"),tr("Editor")); + widget = new EditorMiscWidget(tr("Misc"),tr("Editor")); dialog->addWidget(widget); - widget = new EditorMiscWidget(tr("Misc"),tr("Editor")); + widget = new EditorCustomCTypeKeywordsWidget(tr("Custom C/C++ Keywords"),tr("Languages")); + dialog->addWidget(widget); + + widget = new LanguageAsmGenerationWidget(tr("ASM Generation"),tr("Languages")); dialog->addWidget(widget); widget = new ExecutorGeneralWidget(tr("General"),tr("Program Runner")); diff --git a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts index 5da8cc00..400a6967 100644 --- a/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts +++ b/RedPandaIDE/translations/RedPandaIDE_pt_BR.ts @@ -3051,6 +3051,33 @@ Descrição + + LanguageAsmGenerationWidget + + Form + Configuração + + + Don't generate debug directives + + + + Don't generate SEH directives + + + + AT&&T + AT&&T + + + Intel + Intel + + + Instruction syntax: + + + MacroInfoModel @@ -7161,7 +7188,7 @@ Folders - Pastas + Pastas Terminal @@ -7303,6 +7330,18 @@ Custom C/C++ Keywords + + Folders / Restore Default Settings + + + + Languages + + + + ASM Generation + + SettingsWidget diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts index aa4e4587..5bc0e225 100644 --- a/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts +++ b/RedPandaIDE/translations/RedPandaIDE_zh_CN.ts @@ -568,27 +568,27 @@ p, li { white-space: pre-wrap; } - 编译时间: %1 秒 - + [Error] [错误] - + [Warning] [警告] - + [Info] [信息] - + [Note] [说明] - + The compiler process for '%1' failed to start. 无法启动编译器进程'%1'。 @@ -597,27 +597,27 @@ p, li { white-space: pre-wrap; } 无法启动编译进程。 - + The compiler process crashed after starting successfully. 编译进程启动后崩溃。 - + The last waitFor...() function timed out. waitFor()函数等待超时。 - + An error occurred when attempting to write to the compiler process. 在向编译进程输入内容时出错。 - + An error occurred when attempting to read from the compiler process. 在从编译进程读取内容时出错。 - + An unknown error occurred. 发生了未知错误。 @@ -1483,14 +1483,14 @@ Are you really want to continue? 要剪切的内容超过了字符数限制! - + Print Document 打印文档 - - - + + + Ctrl+click for more info Ctrl+单击以获取更多信息 @@ -1499,27 +1499,27 @@ Are you really want to continue? 未找到符号'%1'! - + astyle not found 找不到astyle程序 - + Can't find astyle in "%1". 找不到astyle程序"%1". - + Break point condition 断点条件 - + Enter the condition of the breakpoint: 输入当前断点的生效条件: - + Readonly 只读 @@ -2852,60 +2852,60 @@ Are you really want to continue? FileCompiler - + Checking single file... 检查单个文件... - + Compiling single file... 编译单个文件... - + - Filename: %1 - 文件名: %1 - + - Compiler Set Name: %1 - 编译器配置: %1 - - + + Can't delete the old executable file "%1". 无法删除旧的可执行文件"%1". - + Can't find the compiler for file %1 Can't the compiler for file %1 找不到适合文件%1的编译器 - + The Compiler '%1' doesn't exists! 编译器程序"%1"不存在! - + Please check the "program" page of compiler settings. 请检查编译器设置中的“程序”页。 - + Processing %1 source file: 正在处理%1源程序文件: - + %1 Compiler: %2 %1编译器: %2 - + Command: %1 %2 命令: %1 %2 @@ -4103,6 +4103,39 @@ Are you really want to continue? 描述 + + LanguageAsmGenerationWidget + + + Form + 表单 + + + + Don't generate debug directives + 不生成调试指令 + + + + Don't generate SEH directives + 不生成SEH异常处理指令 + + + + Instruction syntax: + 汇编指令的语法: + + + + AT&&T + AT&&T + + + + Intel + Intel + + MacroInfoModel @@ -4200,18 +4233,18 @@ Are you really want to continue? MainWindow - + Red Panda C++ 小熊猫C++ - - - - - + + + + + Issues 编译器 @@ -4285,7 +4318,7 @@ Are you really want to continue? - + Debug Console 调试主控台 @@ -4495,9 +4528,9 @@ Are you really want to continue? - - - + + + Copy 复制 @@ -4508,7 +4541,7 @@ Are you really want to continue? - + Paste 粘贴 @@ -4519,8 +4552,8 @@ Are you really want to continue? - - + + Select All 选择全部 @@ -4643,38 +4676,38 @@ Are you really want to continue? - - + + New Problem Set 新建试题集 - + Add Problem 添加试题 - + Remove Problem 删除试题 - - + + Save Problem Set 保存试题集 - - + + Load Problem Set 载入试题集 @@ -4722,7 +4755,7 @@ Are you really want to continue? - + Remove Problem Case Remove Problem Set 删除试题集 @@ -4730,21 +4763,21 @@ Are you really want to continue? - + Open Anwser Source File 打开答案源代码文件 - + Run All Cases Run Current Case 运行所有案例 - + Problem Cases Validation Options 测试案例验证选项 @@ -4804,15 +4837,15 @@ Are you really want to continue? - - + + Import FPS Problem Set 导入FPS试题集 - - + + Export FPS Problem Set 导出FPS试题集 @@ -5059,7 +5092,7 @@ Are you really want to continue? - + Clear all breakpoints 删除所有断点 @@ -5299,7 +5332,7 @@ Are you really want to continue? 保存为模板... - + New File 新建文件 @@ -5340,7 +5373,7 @@ Are you really want to continue? - + Rename Symbol 重命名符号 @@ -5361,13 +5394,13 @@ Are you really want to continue? - + Export As RTF 导出为RTF - + Export As HTML 导出为HTML @@ -5636,7 +5669,7 @@ Are you really want to continue? 运行参数... - + File Encoding 文件编码 @@ -5646,32 +5679,32 @@ Are you really want to continue? 文件历史 - - - - - - + + + + + + Debugging 正在调试 - - - - - - + + + + + + Running 正在运行 - - - - - - + + + + + + Compiling 正在编译 @@ -5685,17 +5718,17 @@ Are you really want to continue? 行: %1 列: %2 已选择 :%3 总行数: %4 总长度: %5 - + Read Only 只读 - + Insert 插入 - + Overwrite 覆写 @@ -5712,7 +5745,7 @@ Are you really want to continue? 确认 - + Source file is not compiled. 源文件尚未编译。 @@ -5729,44 +5762,44 @@ Are you really want to continue? 重新编译? - - - - + + + + Wrong Compiler Settings 错误的编译器设置 - - - - + + + + Compiler is set not to generate executable. 编译器被设置为不生成可执行文件。 - - + + We need the executabe to run problem case. 我们需要可执行文件来运行试题案例。 - + No compiler set 无编译器设置 - + No compiler set is configured. 没有配置编译器设置。 - + Can't start debugging. 无法启动调试器 - + Enable debugging 启用调试参数 @@ -5783,33 +5816,33 @@ Are you really want to continue? 项目尚未构建。是否构建? - + Host applcation missing 宿主程序不存在 - + DLL project needs a host application to run. 动态链接库(DLL)需要一个宿主程序来运行。 - + But it's missing. 但它不存在。 - + Host application not exists 宿主程序不存在 - + Host application file '%1' doesn't exist. 宿主程序'%1'不存在。 - - + + Please correct this before start debugging 请在调试前改正设置。 @@ -5818,8 +5851,8 @@ Are you really want to continue? 重新编译? - - + + Save last open info error 保存上次打开信息失败 @@ -5828,60 +5861,60 @@ Are you really want to continue? 无法删除旧上次打开信息文件'%1' - + Can't save last open info file '%1' 无法保存上次打开信息文件'%1' - - + + Load last open info error 载入上次打开信息失败 - - + + Can't load last open info file '%1' 无法载入上次打开信息文件'%1' - + Open Source File 打开源代码文件 - - + + Batch Set Cases 批量设置案例 - + Show detail debug logs 显示详细调试器日志 - + Copy all 全部复制 - + Go to Line 跳转到行 - + Line - + Template Exists 模板已存在 - + Template %1 already exists. Do you want to overwrite? 模板%1已存在。是否覆盖? @@ -5889,9 +5922,9 @@ Are you really want to continue? - - - + + + Clear 清除 @@ -5907,7 +5940,7 @@ Are you really want to continue? - + Problem Set %1 试题集%1 @@ -5936,56 +5969,56 @@ Are you really want to continue? 项目已经被修改过,是否需要重新构建? - + Auto Save Error 自动保存出错 - + Auto save "%1" to "%2" failed:%3 自动保存"%1"到"%2"失败:%3 - + Properties... 试题属性... - + Set Problem Set Name 设置试题集名称 - + Problem Set Name: 试题集名称: - + Remove 删除 - + Remove All Bookmarks 删除全部书签 - + Modify Description 修改描述 + + + + + Bookmark Description + 书签描述 + - Bookmark Description - 书签描述 - - - - - Description: 描述: @@ -5994,65 +6027,65 @@ Are you really want to continue? 在调试主控台中显示调试器输出 - + Remove this search 清除这次搜索 - + Clear all searches 删除所有搜索 - + Breakpoint condition... 断点条件... - + Break point condition 断点条件 - + Enter the condition of the breakpoint: 输入当前断点的生效条件: - + Remove All Breakpoints Remove all breakpoints 删除所有断点 - + Remove Breakpoint 删除当前断点 - + Rename File 重命名文件 - - + + Add Folder 添加文件夹 - - + + New folder 新文件夹 - + Folder name: 文件夹: - + Rename Folder 重命名 @@ -6065,207 +6098,207 @@ Are you really want to continue? 要现在去修改设置吗? - + Rename Problem Set 修改试题集名称 - + Can't open last open information file '%1' for write! 无法写入配置文件'%1'。 - + Rename Problem 修改试题名称 - + Line: %1 Col: %2 Lines: %3 行: %1 列: %2 总行数: %3 - + Correct compiler setting 改正编译器设置 - - + + You are using a Debug compiler set with wrong compile/link settings: 您使用的Debug编译器配置集中存在错误的“编译/链接”选项设置: - - + + - "Generate debug info (-g3)" should be turned on - 应勾选"生成调试信息(-g3)"选项 - + - "Strip executable (-s)" should be turned off - 应取消"剥除附加信息(-s)"选项 - - + + Do you want to correct it now? 是否现在去改正? - - + + Can't Debug 无法调试 - - + + Your compiler set's "Strip executable (-s)" options is turnned on 您的编译器配置集中的“剥除附加信息(-s)”选项被勾选了。 - - + + Please correct it, recompile and retry debug. 请取消该设置,重新编译然后重新启动调试。 - + Goto Url 跳转到试题网址 - + Add Problem Case 添加试题案例 - + Run Current Case 运行当前案例 - + Remove Folder 删除文件夹 - + Switch to normal view 切换为普通视图 - + Switch to custom view 切换为自定义视图 - + Sort By Type 按类型排序 - + Sort alphabetically 按名称排序 - + Show inherited members 显示继承的成员 - + Goto declaration 跳转到声明处 - + Goto definition 跳转到定义处 - + In current file 仅当前文件 - + In current project 整个项目 - - + + New Folder 新建文件夹 - + Rename 重命名 - - - - + + + + Delete 删除 - + Open in Editor 在编辑器中打开 - + Open in External Program 使用外部程序打开 - + Open in Terminal 在终端中打开 - + Open in Windows Explorer 在Windows浏览器中打开 - + Character sets 字符集 - + Convert to %1 转换为%1编码 - + Newline 换行符 - + %1 files autosaved 已自动保存%1个文件 - + Set answer to... 设置答案源代码... - + select other file... 选择其他文件... - + Select Answer Source File 选择答案源代码文件 @@ -6274,17 +6307,17 @@ Are you really want to continue? 中止 - + FPS Problem Set Files (*.fps;*.xml) FPS试题集文件(*.fps;*.xml) - + FPS Problem Set Files (*.fps) FPS试题集文件(*.fps) - + Export Error 导出时出错 @@ -6294,7 +6327,7 @@ Are you really want to continue? C/C++源代码文件 (*.c *.cpp *.cc *.cxx) - + New Folder %1 新建文件夹%1 @@ -6307,70 +6340,70 @@ Are you really want to continue? 无标题%1 - + Do you really want to delete %1? 你真的要删除%1吗? - + Do you really want to delete %1 files? 你真的要删除%1个文件吗? - + Save project 保存项目 - + The project '%1' has modifications. 项目'%1'有改动。 - - + + Do you want to save it? 需要保存吗? - - + + File Changed 文件已发生变化 - - + + New Project File? 新建项目文件? - - + + Do you want to add the new file to the project? 您是否要将新建的文件加入项目? - - - - + + + + Save Error 保存失败 - + Change Project Compiler Set 改变项目编译器配置集 - + Change the project's compiler set will lose all custom compiler set options. 改变项目的编译器配置集会导致所有的自定义编译器选项被重置。 - - + + Do you really want to do that? 你真的想要那么做吗? @@ -6379,12 +6412,12 @@ Are you really want to continue? 批量设置案例 - + Choose input files 选择输入数据文件 - + Input data files (*.in) 输入数据文件 (*.in) @@ -6393,78 +6426,78 @@ Are you really want to continue? 无标题%1 - + Modify Watch 修改监视表达式 - + Watch Expression 监视表达式 - + Do you really want to clear all breakpoints in this file? 您真的要清除该文件的所有断点吗? - + New project 新建项目 - + Close %1 and start new project? 关闭'%1'以打开新项目? - + Folder not exist 文件夹不存在 - + Folder '%1' doesn't exist. Create it now? 文件夹'%1'不存在。是否创建? - + Can't create folder 无法创建文件夹 - + Failed to create folder '%1'. 创建文件夹'%1'失败。 - + Save new project as - + Folder %1 is not empty. 文件夹%1不是空的。 - + Do you really want to delete it? 你真的要删除它吗? - + Change working folder 改变工作文件夹 - + File '%1' is not in the current working folder. File '%1' is not in the current working folder 文件'%1'不在当前工作文件夹中。 - + Do you want to change working folder to '%1'? 是否将工作文件夹改设为'%1'? @@ -6473,28 +6506,28 @@ Are you really want to continue? 正在删除试题... - + Can't Commit 无法提交 - + Git needs user info to commit. Git需要用信息进行提交。 - + Choose Input Data File 选择输入数据文件 - - + + All files (*.*) 所有文件 (*.*) - + Choose Expected Output Data File Choose Expected Input Data File 选择期望输出文件 @@ -6506,59 +6539,59 @@ Are you really want to continue? - + Choose Working Folder 选择工作文件夹 - - + + Header Exists 头文件已存在 - - + + Header file "%1" already exists! 头文件"%1"已存在! - + Source Exists 源文件已存在! - + Source file "%1" already exists! 源文件"%1"已存在! - + Can't commit! 无法提交! - + The following files are in conflicting: 下列文件处于冲突状态,请解决后重新添加和提交: - + Commit Message 提交信息 - + Commit Message: 提交信息: - + Commit Failed 提交失败 - + Commit message shouldn't be empty! 提交信息不能为空! @@ -6567,22 +6600,22 @@ Are you really want to continue? 小熊猫Dev-C++项目文件 (*.dev) - + New project fail 新建项目失败 - + Can't assign project template 无法使用模板创建项目 - + Remove file 删除文件 - + Remove the file from disk? 同时从硬盘上删除文件? @@ -6591,27 +6624,27 @@ Are you really want to continue? 无标题 - + New Project File Name 新的项目文件名 - + File Name: 文件名: - + File Already Exists! 文件已存在! - + File '%1' already exists! 文件'%1'已经存在! - + Add to project 添加到项目 @@ -6628,27 +6661,27 @@ Are you really want to continue? 请在工具栏中选择Debug编译器配置集,或者在“编译器配置集”设置的“编译/链接选项”页中<b>启用</b>“生成调试信息(-g3)”、<b>禁用</b>“剥除附件信息(-3)”。 - + C/C++ Source Files (*.c *.cpp *.cc *.cxx) C/C++源代码文件 (*.c *.cpp *.cc *.cxx) - + This operation will remove all cases for the current problem. 本操作会删除此试题的所有案例。 - + Debug Failed 调试失败 - + The executable doesn't have symbol table, and can't be debugged. 可执行文件中没有符号表信息,无法调试。 - + Please turn off your compiler set's "Strip executable (-s)" option, recompile and retry debug. 请在选项对话框的编译器配置集页中取消“剥除附加信息(-s)”选项,重新编译后再调试。 @@ -6669,88 +6702,88 @@ Are you really want to continue? 您也可以删除所有断点,打开“CPU信息窗口”,然后调试汇编代码。 - + Failed to generate the executable. 未能生成可执行文件。 - + Please check detail info in "Tools Output" panel. 请查看“工具输出”面板中的详细信息。 - + Red Panda C++ project file (*.dev) 小熊猫C++项目文件(*.dev) - + Rename Error 重命名出错 - + Symbol '%1' is defined in system header. 符号'%1'在系统头文件中定义,无法修改。 - + New Name 新名称 - - - - + + + + Replace Error 替换出错 - + Can't open file '%1' for replace! 无法打开文件'%1'进行替换! - + Contents has changed since last search! 内容和上次查找时不一致。 - + Rich Text Format Files (*.rtf) RTF格式文件 (*.rtf) - + HTML Files (*.html) HTML文件 (*.html) - + The current problem set is not empty. 当前的试题集不是空的。 - + Problem %1 试题%1 - - + + Problem Set Files (*.pbs) 试题集文件 (*.pbs) - - + + Load Error 载入失败 - - + + Problem Case %1 试题案例%1 @@ -6761,14 +6794,14 @@ Are you really want to continue? - - - - - - - - + + + + + + + + Error 错误 @@ -6778,25 +6811,25 @@ Are you really want to continue? 项目历史 - + Load Theme Error 载入主题失败 - - + + Clear History 清除历史 - - + + The generated executable doesn't have symbol table, and can't be debugged. 编译生成的可执行文件中没有符号表,无法被调试。 - - + + Version Control 版本控制 @@ -6805,80 +6838,80 @@ Are you really want to continue? 请在工具栏中选用Debug编译器配置集,或者在选项对话框的编辑器配置集页中勾选“生成调试信息(-g3)"选项。 - + File '%1' was changed. 磁盘文件'%1'已被修改。 - + Reload its content from disk? 是否重新读取它的内容? - + File '%1' was removed. 磁盘文件'%1'已被删除。 - + Keep it open? 是否保持它在小熊猫C++中打开的编辑窗口? - + Open 打开 - - + + Compile Failed 编译失败 - + Run Failed 运行失败 + + + + + + Confirm Convertion + 确认转换 + - Confirm Convertion - 确认转换 - - - - - - The editing file will be saved using %1 encoding. <br />This operation can't be reverted. <br />Are you sure to continue? 当前编辑器中的文件将会使用%1编码保存。<br />这项操作无法被撤回。<br />你确定要继续吗? - + New Watch Expression 新监视表达式 - + Enter Watch Expression (it is recommended to use 'this->' for class members): 输入监视表达式 - + Parsing file %1 of %2: "%3" (%1/%2)正在解析文件"%3" - - + + Done parsing %1 files in %2 seconds 完成%1个文件的解析,用时%2秒 - + (%1 files per second) (每秒%1个文件) @@ -8163,13 +8196,13 @@ Are you really want to continue? QObject - + Save 保存 - + Save changes to %1? 将修改保存到"%1"? @@ -8906,6 +8939,7 @@ Are you really want to continue? RegisterModel + @@ -8922,7 +8956,7 @@ Are you really want to continue? - + @@ -8930,7 +8964,6 @@ Are you really want to continue? - 64-bit 64位 @@ -8939,6 +8972,7 @@ Are you really want to continue? 累加器 + @@ -8946,7 +8980,7 @@ Are you really want to continue? - + @@ -8954,7 +8988,6 @@ Are you really want to continue? - General purpose 通用 @@ -8963,6 +8996,7 @@ Are you really want to continue? 指令 + @@ -8979,11 +9013,11 @@ Are you really want to continue? - 32-bit 32位 + @@ -9000,11 +9034,11 @@ Are you really want to continue? - lower 16 bits of %1 %1的低16位 + @@ -9020,25 +9054,24 @@ Are you really want to continue? - lower 8 bits of %1 %1的低8位 + - 8 high bits of lower 16 bits of %1 %1的低16位数据中的高8位 + - 16-bit 16位 @@ -9051,6 +9084,7 @@ Are you really want to continue? 媒体 + @@ -9065,98 +9099,98 @@ Are you really want to continue? - 128-bit 128位 - + Floating-point control 浮点运算控制 - - + + Accumulator for operands and results data 操作数和结果的累加器 - - + + Pointer to data in the DS segment 指向DS段中数据的指针 - - + + Counter for string and loop operations 字符串和循环操作计数器 - - + + I/O pointer I/O指针 - - + + Source index for string operations; Pointer to data in the segment pointed to by the DS register 字符串操作来源下标;指向DS段中数据的指针 - - + + Destination index for string operations; Pointer to data (or destination) in the segment pointed to by the ES register 字符串操作目的下标;指向ES段中数据(或目标)的指针 - - + + Stack pointer (in the SS segment) 栈指针(在SS段中) - - + + Pointer to data on the stack (in the SS segment) 指向(SS段中)栈内数据的指针 - - + + Instruction pointer 指令指针 + - Flags 标志 - + Code segment selector 代码段选择器 - + Data segment selector 数据段选择器 + - Extra data segment selector 额外的数据段选择器 - + Stack segment selector 栈段选择器 + @@ -9164,57 +9198,56 @@ Are you really want to continue? - Floating-point data 浮点运算数据 - + Floating-point status 浮点运算状态 - + Floating-point tag word 浮点运算标签word - + Floating-point operation 浮点运算操作 - + Floating-point last instruction segment 浮点运算上次指令段 - + Floating-point last instruction offset 浮点运算上次指令位移 - + Floating-point last operand segment 浮点运算上次操作数段 - + Floating-point last operand offset 浮点运算上次操作数位移 - + SSE status and control SSE状态和控制 - + Register 寄存器 - + Value @@ -9821,7 +9854,7 @@ Are you really want to continue? SettingsDialog - + Options 选项 @@ -9847,257 +9880,271 @@ Are you really want to continue? 取消 - + Appearence 外观 - - - - - - + + + + + + Environment 环境 - + File Association 文件关联 - + Shortcuts 快捷键 - Folders - 文件夹 + 文件夹 - + Terminal 终端程序 - + Performance 性能 + + + + + + + Compiler Set + 编译器配置集 + - - - Compiler Set - 编译器配置集 - - - - - - - + + Compiler 编译器 - + Auto Link 自动链接 - - - - - - - + + + + + + + General 通用 - - - - - - - - - - - - + + + + + + + + + + + Editor 编辑器 - + Font 字体 - + Copy & Export 复制/导出 - + Color 配色 - + Code Completion 代码补全 - + Symbol Completion 符号补全 - + Snippet 代码模板 - + Auto Syntax Checking 自动语法检查 - + Tooltips 信息提示 - + Auto save 自动保存 - + Misc 杂项 - - - - + + + + Program Runner 程序运行 - - + + Problem Set 试题集 - + + Folders / Restore Default Settings + 文件夹 / 恢复出厂设置 + + + Custom C/C++ Keywords 自定义C/C++关键字 - + + + Languages + 语言 + + + + ASM Generation + 生成汇编代码 + + + Debugger 调试器 - + Code Formatter 代码排版 - + Program 程序 - - + + Tools 工具 - + Git Git - + Project Options 项目选项 - - - - - - - - - + + + + + + + + + Project 项目 - + Files 文件 - + Custom Compile options 自定义编译选项 - + Directories 文件夹 - + Precompiled Header 预编译头文件 - + Makefile Makefile - + Output 输出 - + DLL host DLL宿主 - + Version info 版本信息 - + Save Changes 保存修改 - + There are changes in the settings, do you want to save them before swtich to other page? 本页中有尚未保存的设置修改,是否保存后再切换到其他页? @@ -10191,27 +10238,27 @@ Are you really want to continue? - 编译器配置: %1 - + Can't find the compiler for file %1 找不到适合文件%1的编译器 - + The Compiler '%1' doesn't exists! 编译器程序'%1'不存在! - + Processing %1 source file: 正在处理%1源程序文件: - + %1 Compiler: %2 %1编译器: %2 - + Command: %1 %2 命令: %1 %2 diff --git a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts index 43e07837..0ffbbef6 100644 --- a/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts +++ b/RedPandaIDE/translations/RedPandaIDE_zh_TW.ts @@ -2888,6 +2888,33 @@ + + LanguageAsmGenerationWidget + + Form + + + + Don't generate debug directives + + + + Don't generate SEH directives + + + + AT&&T + + + + Intel + + + + Instruction syntax: + + + MacroInfoModel @@ -6640,10 +6667,6 @@ Shortcuts - - Folders - - Terminal @@ -6780,6 +6803,18 @@ Custom C/C++ Keywords + + Folders / Restore Default Settings + + + + Languages + + + + ASM Generation + + SettingsWidget diff --git a/libs/qsynedit/qsynedit/syntaxer/asm.cpp b/libs/qsynedit/qsynedit/syntaxer/asm.cpp index 5063bc71..538209dc 100644 --- a/libs/qsynedit/qsynedit/syntaxer/asm.cpp +++ b/libs/qsynedit/qsynedit/syntaxer/asm.cpp @@ -90,8 +90,8 @@ const QSet ASMSyntaxer::Directives { "section","global","extern","segment", "db","dw","dd","dq","dt","do","dy","dz", "resb","resw","resd","resq","rest","reso","resy","resz", - "equ","times","byte""word","dword","qword","tword", - "xmmword","ymmword","zmmword","fword","tbyte","oword" + "equ","times","byte","word","dword","qword","tword", + "xmmword","ymmword","zmmword","fword","tbyte","oword","ptr", #endif }; @@ -101,6 +101,13 @@ const QSet ASMSyntaxer::ATTDirectives { ".intel_style",".att_syntax", ".intel_mnemonic",".att_mnemonic", ".tfloat",".hfloat",".bfloat16", +#endif +#ifdef Q_OS_WIN + ".seh_proc",".seh_endprologue",".seh_handler", + ".seh_eh",".seh_32",".seh_no32",".seh_endproc", + ".seh_setframe",".seh_stackalloc",".seh_pushreg", + ".seh_savereg",".seh_savemm",".seh_savexmm", + ".seh_pushframe",".seh_scope", #endif ".abort",".align",".altmacro",".ascii", ".asciz",".attach",".balign",".bss", @@ -121,9 +128,6 @@ const QSet ASMSyntaxer::ATTDirectives { ".previous",".print",".protected",".psize", ".purgem",".pushsection",".quad",".reloc", ".rept", ".sbttl", ".scl", ".section", - ".seh_pushreg",".seh_setframe", - ".seh_stackalloc",".seh_endprologue", - ".seh_proc",".seh_endproc", ".set", ".short", ".single", ".size", ".skip", ".sleb128", ".space_size", ".stabd", ".stabn", ".stabs", ".string", ".string8", ".string16", diff --git a/libs/qsynedit/qsynedit_zh_CN.ts b/libs/qsynedit/qsynedit_zh_CN.ts index d0cb5977..c8e98cf6 100644 --- a/libs/qsynedit/qsynedit_zh_CN.ts +++ b/libs/qsynedit/qsynedit_zh_CN.ts @@ -14,625 +14,675 @@ 写入数据失败。 - - - + + + byte swap. - + + convert %1 to %2. - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - + + + + + + + + + + + + byte - - - - - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - + + + - - - - - - - + + + + + + + + + + + + + + word - - - - - - + + + + + + + + + + convert %1 in %2 to %3 in %4. - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - + + + - - - - - - - - + + + + + + + + + + + + + + + double word - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - + + + - - - - - - + + + + + + + + + + + + + quad word - Conditional move if equal - 相等时移动 - - - - Conditional move if zero. - - - - - - Conditional move if not equal. - - - - - Conditional move if above. - - - - - Conditional move if not below or equal. - - - - - Conditional move if above or equal. - - - - - Conditional move if not below. - - - - - Conditional move if below. - - - - - Conditional move if not above or equal. - - - - - Conditional move if below or equal. - - - - - Conditional move if not above. - - - - - Conditional move if greater. - - - - - Conditional move if not less or equal. - - - - - Conditional move if greater or equal. - - - - - Conditional move if not less. - - - - - Conditional move if less. - - - - - Conditional move if not greater or equal. - - - - - Conditional move if less or equal. - - - - - Conditional move if not greater. - - - - - Conditional move if carry. - - - - - Conditional move if not carry. - - - - - Conditional move if overflow. - + 相等时移动 - Conditional move if not overflow. - - - - Conditional move if sign (negative). - - - - Conditional move if not sign (non-negative). - - - - Conditional move if parity. - - - - - Conditional move if parity even. - - - - Conditional move if not parity. - - - - Conditional move if parity odd. - - - - - Compare and exchange. - - - - Compare and exchange 8 bytes. - - - - oct word - - - + + - move data between immediate values, general purpose registers, segment registers, and memory. - - - - move %1 data between immediate values, general purpose registers, segment registers, and memory. - - - - - - Move %1. - - - - move immediate value to register. - - - - move immediate %1 value to register. - - - - move immediate value to register %al/%ax/%eax/%rax. - - - - - move immediate %1 value to register %2. - - - - Move and sign extension. - - - - - Move sign-extended %1 to %2. + Conditional move %1 + Conditional move if not overflow. + + + + + if equal + + + + + + + if zero. + + + + + + + if not equal. + + + + + + + if not zero. + + + + + + + if sign (negative). + + + + + + + if not sign (non-negative). + + + + + + + if greater(signed >). + + + + + + + if not less or equal(signed >). + + + + + + + if greater or equal(signed >=). + + + + + + + if not less(signed >=). + + + + + + if less(signed <). + + + + + + if not greater or equal(signed <). + + + + + + if less or equal(signed <=). + + + + + + if not greater(signed <=). + + + + + + + if above(unsigned >). + + + + + + + if not below or equal(unsigned >). + + + + + + + if above or equal(unsigned >=). + + + + + + + if not below(unsigned >=). + + + + + + + if below(unsigned <). + + + + + + + if not above or equal(unsigned <). + + + + + + + if below or equal(unsigned <=). + + + + + + + if not above(unsigned <=). + + + + + + + if carry. + + + + + + + if not carry. + + + + + + + if overflow. + + + + + + + if not overflow. + + + + + + + if parity. + + + + + + + if parity even. + + + + + + + if not parity. + + + + + + + if parity odd. - Move with zero extension. + Compare and exchange. + Compare and exchange 8 bytes. + + + - - - Move zero-extended %1 to %2. + oct word - - Pop stack. - - - - + move data between immediate values, general purpose registers, segment registers, and memory. + + + - Pop %1 off stack. + move %1 data between immediate values, general purpose registers, segment registers, and memory. - Pop general-purpose registers from stack. + + Move %1. - Push stack. + move immediate value to register. - Push %1 onto stack. - - - - - - Push general-purpose registers onto stack. + move immediate %1 value to register. + + move immediate value to register %al/%ax/%eax/%rax. + + + + - - - Exchange and add %1. + move immediate %1 value to register %2. + + Move and sign extension. + + + + + Move sign-extended %1 to %2. + + + + + Move with zero extension. + + + + + + + + + Move zero-extended %1 to %2. + + + + + Pop stack. + + + + + + + Pop %1 off stack. + + + + + + + Pop general-purpose registers from stack. + + + + + Push stack. + + + + + + + Push %1 onto stack. + + + + + + + Push general-purpose registers onto stack. + + + + + + + + + Exchange and add %1. + + + + + + + + Exchange %1. - + add unsigned %1 with carry. - - - - - + - - - - - - + + + + + + + + + + integer - - - add unsigned %1 with overflow. - - - - - - - - - add %1 with carry. - - - - - - - - - add %1. - - - - - compare. - - - - - - - - compare %1. - - - - - decrement by 1. - - - - - - - - decrement %1 by 1. - - - - - - - - - unsigned %1 divide. - - - - - - - signed %1 divide. + add unsigned %1 with overflow. @@ -641,34 +691,34 @@ - signed %1 multiply. + add %1 with carry. - increment by 1. - - - - increment %1 by 1. + add %1. + compare. + + + - unsigned %1 multiply. + compare %1. - Two's complement negation. + decrement by 1. @@ -676,7 +726,7 @@ - Replace the value of the %1 with its two's complement + decrement %1 by 1. @@ -685,7 +735,7 @@ - subtract %1 with borrow. + unsigned %1 divide. @@ -694,107 +744,104 @@ - subtract %1. + signed %1 divide. + - ascii adjust after addition. - - - - ascii adjust before division. - - - - ascii adjust after multiplication. - - - - ascii adjust after subtraction. + signed %1 multiply. - decimal adjust after addition. + increment by 1. - decimal adjust after subtraction. - - - + - bitwise logical AND. + + increment %1 by 1. - - bitwise logical AND on %1 values. - - - - bitwise logical NOT. + + unsigned %1 multiply. - + Two's complement negation. + + + - bitwise logical NOT on %1 value. - - - - bitwise logical OR. + + Replace the value of the %1 with its two's complement - - bitwise logical OR on %1 values. - - - - bitwise logical XOR. + + subtract %1 with borrow. - - bitwise logical XOR on %1 values. + + + subtract %1. - - + ascii adjust after addition. + + + + ascii adjust before division. + + + - rotate %1 through carry left. + ascii adjust after multiplication. + ascii adjust after subtraction. + + + + decimal adjust after addition. + + + - + decimal adjust after subtraction. + + + - rotate %1 through carry right. + bitwise logical AND. @@ -802,8 +849,12 @@ + bitwise logical AND on %1 values. + + + - rotate %1 left. + bitwise logical NOT. @@ -811,8 +862,12 @@ + bitwise logical NOT on %1 value. + + + - rotate %1 right. + bitwise logical OR. @@ -820,8 +875,12 @@ + bitwise logical OR on %1 values. + + + - shift %1 arithmetic left. + bitwise logical XOR. @@ -829,8 +888,7 @@ - - shift %1 arithmetic right. + bitwise logical XOR on %1 values. @@ -839,7 +897,7 @@ - shift %1 logical left. + rotate %1 through carry left. @@ -848,7 +906,7 @@ - shift %1 logical right. + rotate %1 through carry right. @@ -857,7 +915,7 @@ - shift %1 left double. + rotate %1 left. @@ -866,2080 +924,1935 @@ - shift %1 right double. + rotate %1 right. + - bit scan forward. - - - - bit scan forward in the %1 operand. + shift %1 arithmetic left. - bit scan reserve. - - - - bit scan reserve in the %1 operand. - - - - bit test. + shift %1 arithmetic right. - bit test in the %1 operand. - - - - bit test and complement. + + shift %1 logical left. - - bit test and complement in the %1 operand. - - - - bit test and reset. - - - + shift %1 logical right. + + + - bit test and reset in the %1 operand. - - - - bit test and set. - - - - bit test and set in the %1 operand. + shift %1 left double. - set byte if above. - - - - set byte if above or equal. - - - - set byte if below. - - - - set byte if below or equal. - - - - set byte if carry. - - - - - set byte if equal. + shift %1 right double. - set byte if greater. + bit scan forward. - set byte if greater or equal. - - - - set byte if less. - - - - set byte if less or equal. + bit scan forward in the %1 operand. - set byte if not above. + bit scan reserve. - set byte if not above or equal. - - - - set byte if not below. - - - - set byte if not below or equal. + bit scan reserve in the %1 operand. - set byte if not carry. + bit test. - set byte if not equal. - - - - set byte if not greater. - - - - set byte if not greater or equal. + bit test in the %1 operand. - set byte if not less. + bit test and complement. - set byte if not less or equal. - - - - set byte if not overflow. - - - - set byte if not parity. + bit test and complement in the %1 operand. - set byte if not sign (non-negative). + bit test and reset. - set byte if not zero. - - - - set byte if overflow. - - - - set byte if parity. + bit test and reset in the %1 operand. - set byte if parity even. + bit test and set. - set byte if parity odd. - - - - set byte if sign (negative). - - - - set byte if zero. + bit test and set in the %1 operand. - + + + mnemonic description. + + + + + load +0.0 . + + + + + load %mxcsr register. + + + + + save %mxcsr register state. + + + + logical compare. + + + + + + logical compare %1. + + + + + detect value out of range. + + + + + + detect %1 value out of range. + + + + + call procedure. + + + + + high-level procedure entry. + + + + + software interrupt. + + + + + interrupt on overflow. + + + + + return from interrupt. + + + + + jump. + + + + + call far procedure. + + + + + high-level procedure exit. + + + + + return from far procedure. + + + + + return. + + + + + compare string. + + + + + + + + compare %1 string. + + + + + load string. + + + + + + + + load %1 string. + + + + + move string. + + + + + + + + move %1 string. + + + + + repeat while not equal. + + + + + repeat while not zero. + + + + + repeat while equal. + + + + + repeat while zero. + + + + + scan string. + + + + + + + + scan %1 string. + + + + + store string. + + + + + + + + store %1 string. + + + + + read from a port. + + + + + input string from a port. + + + + + input byte string from port. + + + + + input double word string from port. + + + + + input word string from port. + + + + + write to a port. + + + + + output string to port. + + + + + output byte string to port. + + + + + output double word string to port. + + + + + output word string to port. + + + + + clear carry flag. + + + + + clear direction flag. + + + + + clear interrupt flag. + + + + + complement carry flag. + + + + + set carry flag. + + + + + set direction flag. + + + + + set interrupt flag. + + + + + processor identification. + + + + + + + + load effective address. + + + + + no operation. + + + + + undefined instruction. + + + + + + table lookup translation. + + + + + load bcd. + + + + + store bcd and pop. + + + + + floating-point conditional move if below. + + + + + floating-point conditional move if below or equal. + + + + + floating-point conditional move if equal. + + + + + floating-point conditional move if not below. + + + + + floating-point conditional move if not below or equal. + + + + + floating-point conditional move if not equal. + + + + + + floating-point conditional move if unordered. + + + + + load integer. + + + + + store integer. + + + + + store integer and pop. + + + + + load floating-point value. + + + + + store floating-point value. + + + + + store floating-point value and pop. + + + + + absolute value. + + + + + add floating-point. + + + + + add floating-point and pop. + + + + + change sign. + + + + + divide floating-point. + + + + + divide floating-point and pop. + + + + + divide floating-point reverse. + + + + + divide floating-point reverse and pop. + + + + + add integer. + + + + + divide integer. + + + + + divide integer reverse. + + + + + multiply integer. + + + + + subtract integer. + + + + + subtract integer reverse. + + + + + multiply floating-point. + + + + + multiply floating-point and pop. + + + + + partial remainder. + + + + + ieee partial remainder. + + + + + round to integer. + + + + + scale by power of two. + + + + + square root. + + + + + subtract floating-point. + + + + + subtract floating-point and pop. + + + + + subtract floating-point reverse. + + + + + subtract floating-point reverse and pop. + + + + + compare floating-point. + + - logical compare %1. - - - + - detect value out of range. - - - - - detect %1 value out of range. - - - - call procedure. - - - - high-level procedure entry. + + + + + + + + + + + + + + + + + + + + + + set byte %1 - - software interrupt. + + + if equal. - interrupt on overflow. + if less(siged <). - return from interrupt. + if not greater or equal(siged <). - jump if above. + if less or equal(siged <=). - jump if above or equal. - - - - - jump if below. - - - - - jump if below or equal. - - - - - jump if carry. - - - - - jump register %cx zero - - - - - jump if equal. - - - - - jump register %ecx zero - - - - - jump if greater. - - - - - jump if greater or equal. - - - - - jump if less. - - - - - jump if less or equal. - - - - - jump. - - - - - jump if not above or equal. - - - - - jump if not below. - - - - - jump if not below or equal. - - - - - jump if not carry. - - - - - jump if not equal. - - - - - jump if not greater. - - - - - jump if not greater or equal. - - - - - jump if not less. - - - - - jump if not less or equal. - - - - - jump if not overflow. - - - - - jump if not parity. - - - - - jump if not sign (non-negative). - - - - - jump if not zero. - - - - - jump if overflow. - - - - - jump if parity. - - - - - jump if parity even. - - - - - jump if parity odd. - - - - - jump if sign (negative). - - - - - jump if zero. - - - - - call far procedure. - - - - - high-level procedure exit. - - - - - loop with %ecx counter - - - - - loop with %ecx and equal - - - - - loop with %ecx and not equal - - - - - loop with %ecx and not zero + if not greater(siged <=). - loop with %ecx and zero - - - - return from far procedure. - - - - return. - - - + - compare string. - - - - - compare %1 string. - - - - load string. - - - - load %1 string. - - - - move string. - - - - - move %1 string. - - - - repeat while %ecx not zero - - - - repeat while not equal. - - - - repeat while not zero. - - - - repeat while equal. - - - - repeat while zero. - - - - - scan string. - - - - scan %1 string. - - - - store string. - - - - store %1 string. + + jump %1 - - read from a port. + + register %cx zero - - input string from a port. - - - - - input byte string from port. + + register %ecx zero - input double word string from port. + loop with %ecx counter - input word string from port. + loop with %ecx and equal - write to a port. + loop with %ecx and not equal - output string to port. + loop with %ecx and not zero - output byte string to port. - - - - - output double word string to port. - - - - - output word string to port. - - - - - clear carry flag. - - - - - clear direction flag. - - - - - clear interrupt flag. - - - - - complement carry flag. - - - - - load flags into %ah register - - - - - - pop %eflags from stack - - - - - - push %eflags onto stack - - - - - store %ah register into flags - - - - - set carry flag. - - - - - set direction flag. - - - - - set interrupt flag. - - - - - load far pointer using %ds - - - - - load far pointer using %es + loop with %ecx and zero - load far pointer using %fs - - - - - load far pointer using %gs - - - - - load far pointer using %ss - - - - - processor identification. - - - - - - - - load effective address. - - - - - no operation. - - - - - undefined instruction. - - - - - - table lookup translation. - - - - - load bcd. - - - - - store bcd and pop. - - - - - floating-point conditional move if below. - - - - - floating-point conditional move if below or equal. - - - - - floating-point conditional move if equal. - - - - - floating-point conditional move if not below. - - - - - floating-point conditional move if not below or equal. - - - - - floating-point conditional move if not equal. - - - - - - floating-point conditional move if unordered. - - - - - load integer. - - - - - store integer. - - - - - store integer and pop. - - - - - load floating-point value. - - - - - store floating-point value. + repeat while %ecx not zero - store floating-point value and pop. + load flags into %ah register - exchange registers . + + pop %eflags from stack - absolute value. - - - - add floating-point. + push %eflags onto stack - add floating-point and pop. - - - - - change sign. - - - - - divide floating-point. - - - - - divide floating-point and pop. - - - - - divide floating-point reverse. + store %ah register into flags - divide floating-point reverse and pop. + load far pointer using %ds - add integer. + load far pointer using %es - divide integer. + load far pointer using %fs - divide integer reverse. + load far pointer using %gs - multiply integer. - - - - - subtract integer. - - - - - subtract integer reverse. - - - - - multiply floating-point. - - - - - multiply floating-point and pop. - - - - - partial remainder. - - - - - ieee partial remainder. - - - - - round to integer. - - - - - scale by power of two. - - - - - square root. - - - - - subtract floating-point. - - - - - subtract floating-point and pop. - - - - - subtract floating-point reverse. - - - - - subtract floating-point reverse and pop. - - - - - extract exponent and significand . - - - - - compare floating-point. - - - - - compare floating-point and set %eflags. - - - - - compare floating-point, set %eflags, and pop. - - - - - compare floating-point and pop. - - - - - - compare floating-point and pop twice. - - - - - compare integer. - - - - - compare integer and pop. - - - - - test floating-point (compare with 0.0). - - - - - unordered compare floating-point. - - - - - unordered compare floating-point and set %eflags. - - - - - unordered compare floating-point, set %eflags, and pop. - - - - - unordered compare floating-point and pop. - - - - - examine floating-point . + load far pointer using %ss - instructions (floating-point) . - - - - - transcendental instructions perform trigonometric and logarithmic operations on floating-point operands. . - - - - - 3–16 transcendental instructions (floating-point). - - - - - - mnemonic  description. - - - - - computes 2x-1. - - - - - cosine. - - - - - partial arctangent. - - - - - partial tangent. - - - - - sine. - - - - - sine and cosine. - - - - - computes y * log2x. - - - - - computes y * log2(x+1). - - - - - load +1.0. - - - - - load log2e. - - - - - load log210. - - - - - load log102. - - - - - load loge2. - - - - - load π. - - - - - load +0.0 . - - - - - clear floating-point exception flags after checking for error conditions. - - - - - decrement floating-point register stack pointer. - - - - - free floating-point register. - - - - - increment floating-point register stack pointer. - - - - - initialize floating-point unit after checking error conditions. - - - - - load floating-point unit control word. + exchange registers . - load floating-point unit environment. - - - - - clear floating-point exception flags without checking for error conditions. - - - - - initialize floating-point unit without checking error conditions. + extract exponent and significand . - floating-point no operation. + compare floating-point and set %eflags. - save floating-point unit state without checking error conditions. + compare floating-point, set %eflags, and pop. - store floating-point unit control word without checking error conditions. + compare floating-point and pop. - store floating-point unit environment without checking error conditions. + + compare floating-point and pop twice. - store floating-point unit status word without checking error conditions. + compare integer. - restore floating-point unit state. + compare integer and pop. - save floating-point unit state after checking error conditions. + test floating-point (compare with 0.0). - store floating-point unit control word after checking error conditions. - - - - - store floating-point unit environment after checking error conditions. - - - - - store floating-point unit status word after checking error conditions. + unordered compare floating-point. - - wait for floating-point unit. + unordered compare floating-point and pop. + + + + + unordered compare floating-point and set %eflags. + + + + + unordered compare floating-point, set %eflags, and pop. + + + + + examine floating-point . + + + + + instructions (floating-point) . - restore floating-point unit and simd state. + transcendental instructions perform trigonometric and logarithmic operations on floating-point operands. . - save floating-point unit and simd state. + 3–16 transcendental instructions (floating-point). + + + + + computes 2x-1. + + + + + cosine. + + + + + partial arctangent. + + + + + partial tangent. - pack doublewords into words with signed saturation. + sine. - pack words into bytes with signed saturation. + sine and cosine. - pack words into bytes with unsigned saturation. + computes y * log2x. - unpack high-order bytes. - - - - - unpack high-order doublewords. + computes y * log2(x+1). - unpack high-order words. + load +1.0. - unpack low-order bytes. + load log2e. - unpack low-order doublewords. + load log210. - unpack low-order words. + load log102. + + + + + load loge2. - add packed byte integers. - - - - - add packed doubleword integers. - - - - - add packed signed byte integers with signed saturation. + load π. - add packed signed word integers with signed saturation. + clear floating-point exception flags after checking for error conditions. - add packed unsigned byte integers with unsigned saturation. + decrement floating-point register stack pointer. - add packed unsigned word integers with unsigned saturation. + free floating-point register. - add packed word integers. + increment floating-point register stack pointer. - multiply and add packed word integers. + initialize floating-point unit after checking error conditions. - multiply packed signed word integers and store high result. + load floating-point unit control word. - multiply packed signed word integers and store low result. + load floating-point unit environment. - subtract packed byte integers. + clear floating-point exception flags without checking for error conditions. - subtract packed doubleword integers. + initialize floating-point unit without checking error conditions. - subtract packed signed byte integers with signed saturation. + floating-point no operation. - subtract packed signed word integers with signed saturation. + save floating-point unit state without checking error conditions. - subtract packed unsigned byte integers with unsigned saturation. + store floating-point unit control word without checking error conditions. - subtract packed unsigned word integers with unsigned saturation. + store floating-point unit environment without checking error conditions. - subtract packed word integers. + store floating-point unit status word without checking error conditions. + + + + + restore floating-point unit state. - compare packed bytes for equal. + save floating-point unit state after checking error conditions. - compare packed doublewords for equal. + store floating-point unit control word after checking error conditions. - compare packed words for equal. + store floating-point unit environment after checking error conditions. - compare packed signed byte integers for greater than. + store floating-point unit status word after checking error conditions. - compare packed signed doubleword integers for greater than. - - - - compare packed signed word integers for greater than. - - - - - bitwise logical and. + wait for floating-point unit. - bitwise logical and not. + restore floating-point unit and simd state. - bitwise logical or. - - - - - bitwise logical xor. - - - - - shift packed doublewords left logical. - - - - - shift packed quadword left logical. - - - - - shift packed words left logical. + save floating-point unit and simd state. - shift packed doublewords right arithmetic. + pack doublewords into words with signed saturation. - shift packed words right arithmetic. + pack words into bytes with signed saturation. - shift packed doublewords right logical. + pack words into bytes with unsigned saturation. - shift packed quadword right logical. + unpack high-order bytes. - shift packed words right logical. + unpack high-order doublewords. + + + + + unpack high-order words. - empty mmx state. + unpack low-order bytes. + + + + + unpack low-order doublewords. + + + + + unpack low-order words. + + + + + add packed byte integers. + + + + + add packed doubleword integers. - move four aligned packed single-precision floating-point values between xmm registers or memory. + add packed signed byte integers with signed saturation. - move two packed single-precision floating-point values from the high quadword of an xmm register to the low quadword of another xmm register. + add packed signed word integers with signed saturation. - move two packed single-precision floating-point values to or from the high quadword of an xmm register or memory. + add packed unsigned byte integers with unsigned saturation. - move two packed single-precision floating-point values from the low quadword of an xmm register to the high quadword of another xmm register. + add packed unsigned word integers with unsigned saturation. - move two packed single-precision floating-point values to or from the low quadword of an xmm register or memory. + add packed word integers. - extract sign mask from four packed single-precision floating-point values. + multiply and add packed word integers. - move scalar single-precision floating-point value between xmm registers or memory. + multiply packed signed word integers and store high result. - move four unaligned packed single-precision floating-point values between xmm registers or memory. + multiply packed signed word integers and store low result. + + + + + subtract packed byte integers. - add packed single-precision floating-point values. + subtract packed doubleword integers. - add scalar single-precision floating-point values. + subtract packed signed byte integers with signed saturation. - divide packed single-precision floating-point values. + subtract packed signed word integers with signed saturation. - divide scalar single-precision floating-point values. + subtract packed unsigned byte integers with unsigned saturation. - return maximum packed single-precision floating-point values. + subtract packed unsigned word integers with unsigned saturation. - return maximum scalar single-precision floating-point values. - - - - - return minimum packed single-precision floating-point values. + subtract packed word integers. - return minimum scalar single-precision floating-point values.. + compare packed bytes for equal. - multiply packed single-precision floating-point values. + compare packed doublewords for equal. - multiply scalar single-precision floating-point values. + compare packed words for equal. - compute reciprocals of packed single-precision floating-point values. + compare packed signed byte integers for greater than. - compute reciprocal of scalar single-precision floating-point values. + compare packed signed doubleword integers for greater than. - compute reciprocals of square roots of packed single-precision floating-point values. - - - - - compute reciprocal of square root of scalar single-precision floating-point values. + compare packed signed word integers for greater than. - compute square roots of packed single-precision floating-point values. + bitwise logical and. - compute square root of scalar single-precision floating-point values. + bitwise logical and not. - subtract packed single-precision floating-point values. + bitwise logical or. - subtract scalar single-precision floating-point values. + bitwise logical xor. - compare packed single-precision floating-point values. + shift packed doublewords left logical. - compare scalar single-precision floating-point values. + shift packed quadword left logical. - perform ordered comparison of scalar single-precision floating-point values and set flags in eflags register. + shift packed words left logical. - perform unordered comparison of scalar single-precision floating-point values and set flags in eflags register. + shift packed doublewords right arithmetic. + + + + + shift packed words right arithmetic. - perform bitwise logical and not of packed single-precision floating-point values. + shift packed doublewords right logical. - perform bitwise logical and of packed single-precision floating-point values. + shift packed quadword right logical. - perform bitwise logical or of packed single-precision floating-point values. + shift packed words right logical. - - perform bitwise logical xor of packed single-precision floating-point values. - - - - - shuffles values in packed single-precision floating-point operands. - - - - - unpacks and interleaves the two high-order values from two single-precision floating-point operands. - - - - - unpacks and interleaves the two low-order values from two single-precision floating-point operands. - - - - - - convert packed doubleword integers to packed single-precision floating-point values. + + empty mmx state. - - convert packed single-precision floating-point values to packed doubleword integers. + move four aligned packed single-precision floating-point values between xmm registers or memory. - convert doubleword integer to scalar single-precision floating-point value. + move two packed single-precision floating-point values from the high quadword of an xmm register to the low quadword of another xmm register. - convert scalar single-precision floating-point value to a doubleword integer. + move two packed single-precision floating-point values to or from the high quadword of an xmm register or memory. - - convert with truncation packed single-precision floating-point values to packed doubleword integers. + move two packed single-precision floating-point values from the low quadword of an xmm register to the high quadword of another xmm register. - convert with truncation scalar single-precision floating-point value to scalar doubleword integer. + move two packed single-precision floating-point values to or from the low quadword of an xmm register or memory. + + + + + extract sign mask from four packed single-precision floating-point values. - load %mxcsr register. + move scalar single-precision floating-point value between xmm registers or memory. - save %mxcsr register state. + move four unaligned packed single-precision floating-point values between xmm registers or memory. + add packed single-precision floating-point values. + + + - compute average of packed unsigned byte integers. + add scalar single-precision floating-point values. - extract word. + divide packed single-precision floating-point values. - insert word. + divide scalar single-precision floating-point values. - maximum of packed signed word integers. + return maximum packed single-precision floating-point values. - maximum of packed unsigned byte integers. + return maximum scalar single-precision floating-point values. - minimum of packed signed word integers. + return minimum packed single-precision floating-point values. - minimum of packed unsigned byte integers. + return minimum scalar single-precision floating-point values.. - move byte mask. + multiply packed single-precision floating-point values. - multiply packed unsigned integers and store high result. + multiply scalar single-precision floating-point values. - compute sum of absolute differences. + compute reciprocals of packed single-precision floating-point values. - shuffle packed integer word in mmx register. + compute reciprocal of scalar single-precision floating-point values. + + + + + compute reciprocals of square roots of packed single-precision floating-point values. - non-temporal store of selected bytes from an mmx register into memory. + compute reciprocal of square root of scalar single-precision floating-point values. - non-temporal store of four packed single-precision floating-point values from an xmm register into memory. + compute square roots of packed single-precision floating-point values. - non-temporal store of quadword from an mmx register into memory. + compute square root of scalar single-precision floating-point values. - prefetch data into non-temporal cache structure and into a location close to the processor. + subtract packed single-precision floating-point values. - prefetch data into all levels of the cache hierarchy. + subtract scalar single-precision floating-point values. - - prefetch data into level 2 cache and higher. + compare packed single-precision floating-point values. - serialize store operations. + compare scalar single-precision floating-point values. + + + + + perform ordered comparison of scalar single-precision floating-point values and set flags in eflags register. + + + + + perform unordered comparison of scalar single-precision floating-point values and set flags in eflags register. + + + + + perform bitwise logical and not of packed single-precision floating-point values. - move two aligned packed double-precision floating-point values between xmm registers and memory. + perform bitwise logical and of packed single-precision floating-point values. - move high packed double-precision floating-point value to or from the high quadword of an xmm register and memory. + perform bitwise logical or of packed single-precision floating-point values. - move low packed single-precision floating-point value to or from the low quadword of an xmm register and memory. - - - - - extract sign mask from two packed double-precision floating-point values. + perform bitwise logical xor of packed single-precision floating-point values. - move scalar double-precision floating-point value between xmm registers and memory.. + shuffles values in packed single-precision floating-point operands. - move two unaligned packed double-precision floating-point values between xmm registers and memory. + unpacks and interleaves the two high-order values from two single-precision floating-point operands. - - add packed double-precision floating-point values. + + unpacks and interleaves the two low-order values from two single-precision floating-point operands. - add scalar double-precision floating-point values. + + convert packed doubleword integers to packed single-precision floating-point values. - divide packed double-precision floating-point values. + + convert packed single-precision floating-point values to packed doubleword integers. - divide scalar double-precision floating-point values. + convert doubleword integer to scalar single-precision floating-point value. - return maximum packed double-precision floating-point values. + convert scalar single-precision floating-point value to a doubleword integer. - return maximum scalar double-precision floating-point value. + + convert with truncation packed single-precision floating-point values to packed doubleword integers. - return minimum packed double-precision floating-point values. - - - - - return minimum scalar double-precision floating-point value. - - - - - multiply packed double-precision floating-point values. - - - - - multiply scalar double-precision floating-point values. - - - - - compute packed square roots of packed double-precision floating-point values. + convert with truncation scalar single-precision floating-point value to scalar doubleword integer. - compute scalar square root of scalar double-precision floating-point value. - - - - subtract packed double-precision floating-point values. + compute average of packed unsigned byte integers. - subtract scalar double-precision floating-point values. + extract word. + + + + + insert word. - perform bitwise logical and not of packed double-precision floating-point values. + maximum of packed signed word integers. - perform bitwise logical and of packed double-precision floating-point values. + maximum of packed unsigned byte integers. - perform bitwise logical or of packed double-precision floating-point values. + minimum of packed signed word integers. - perform bitwise logical xor of packed double-precision floating-point values. + minimum of packed unsigned byte integers. + + + + + move byte mask. - compare packed double-precision floating-point values. + multiply packed unsigned integers and store high result. - compare scalar double-precision floating-point values. + compute sum of absolute differences. - perform ordered comparison of scalar double-precision floating-point values and set flags in eflags register. + shuffle packed integer word in mmx register. - - perform unordered comparison of scalar double-precision floating-point values and set flags in eflags register. + + non-temporal store of selected bytes from an mmx register into memory. - shuffle values in packed double-precision floating-point operands. + non-temporal store of four packed single-precision floating-point values from an xmm register into memory. - unpack and interleave the high values from two packed double-precision floating-point operands. + non-temporal store of quadword from an mmx register into memory. - unpack and interleave the low values from two packed double-precision floating-point operands. + prefetch data into non-temporal cache structure and into a location close to the processor. + + + + + prefetch data into all levels of the cache hierarchy. - - convert packed doubleword integers to packed double-precision floating-point values. - - - + prefetch data into level 2 cache and higher. + + + - convert packed double-precision floating-point values to packed doubleword integers. - - - - - convert packed double-precision floating-point values to packed single-precision floating-point values. - - - - - convert packed single-precision floating-point values to packed double-precision floating-point values. - - - - - convert scalar double-precision floating-point values to a doubleword integer. + serialize store operations. - convert scalar double-precision floating-point values to scalar single-precision floating-point values. + move two aligned packed double-precision floating-point values between xmm registers and memory. - convert doubleword integer to scalar double-precision floating-point value. + move high packed double-precision floating-point value to or from the high quadword of an xmm register and memory. - convert scalar single-precision floating-point values to scalar double-precision floating-point values. + move low packed single-precision floating-point value to or from the low quadword of an xmm register and memory. + extract sign mask from two packed double-precision floating-point values. + + + - convert with truncation packed double-precision floating-point values to packed doubleword integers. + move scalar double-precision floating-point value between xmm registers and memory.. - convert with truncation scalar double-precision floating-point values to scalar doubleword integers. + move two unaligned packed double-precision floating-point values between xmm registers and memory. + + + + + add packed double-precision floating-point values. + + + + + add scalar double-precision floating-point values. + + + + + divide packed double-precision floating-point values. + + + + + divide scalar double-precision floating-point values. - move quadword integer from xmm to mmx registers. + return maximum packed double-precision floating-point values. - move aligned double quadword. + return maximum scalar double-precision floating-point value. - move unaligned double quadword. + return minimum packed double-precision floating-point values. - move quadword integer from mmx to xmm registers. + return minimum scalar double-precision floating-point value. - add packed quadword integers. + multiply packed double-precision floating-point values. - multiply packed unsigned doubleword integers. + multiply scalar double-precision floating-point values. - shuffle packed doublewords. + compute packed square roots of packed double-precision floating-point values. - shuffle packed high words. + compute scalar square root of scalar double-precision floating-point value. - shuffle packed low words. + subtract packed double-precision floating-point values. - shift double quadword left logical. - - - - - shift double quadword right logical. + subtract scalar double-precision floating-point values. - subtract packed quadword integers. + perform bitwise logical and not of packed double-precision floating-point values. - unpack high quadwords. + perform bitwise logical and of packed double-precision floating-point values. - unpack low quadwords. + perform bitwise logical or of packed double-precision floating-point values. - - flushes and invalidates a memory operand and its associated cache line from all levels of the processor's cache hierarchy. + + perform bitwise logical xor of packed double-precision floating-point values. - serializes load operations. + compare packed double-precision floating-point values. - non-temporal store of selected bytes from an xmm register into memory. + compare scalar double-precision floating-point values. - serializes load and store operations. + perform ordered comparison of scalar double-precision floating-point values and set flags in eflags register. - non-temporal store of double quadword from an xmm register into memory. - - - - - non-temporal store of a doubleword from a general-purpose register into memory. + perform unordered comparison of scalar double-precision floating-point values and set flags in eflags register. - non-temporal store of two packed double-precision floating-point values from an xmm register into memory. + shuffle values in packed double-precision floating-point operands. + unpack and interleave the high values from two packed double-precision floating-point operands. + + + + + unpack and interleave the low values from two packed double-precision floating-point operands. + + + + + + convert packed doubleword integers to packed double-precision floating-point values. + + + + + + convert packed double-precision floating-point values to packed doubleword integers. + + + + + convert packed double-precision floating-point values to packed single-precision floating-point values. + + + + + convert packed single-precision floating-point values to packed double-precision floating-point values. + + + + + convert scalar double-precision floating-point values to a doubleword integer. + + + + + convert scalar double-precision floating-point values to scalar single-precision floating-point values. + + + + + convert doubleword integer to scalar double-precision floating-point value. + + + + + convert scalar single-precision floating-point values to scalar double-precision floating-point values. + + + + + + convert with truncation packed double-precision floating-point values to packed doubleword integers. + + + + + convert with truncation scalar double-precision floating-point values to scalar doubleword integers. + + + + + move quadword integer from xmm to mmx registers. + + + + + move aligned double quadword. + + + + + move unaligned double quadword. + + + + + move quadword integer from mmx to xmm registers. + + + + + add packed quadword integers. + + + + + multiply packed unsigned doubleword integers. + + + + + shuffle packed doublewords. + + + + + shuffle packed high words. + + + + + shuffle packed low words. + + + + + shift double quadword left logical. + + + + + shift double quadword right logical. + + + + + subtract packed quadword integers. + + + + + unpack high quadwords. + + + + + unpack low quadwords. + + + + + flushes and invalidates a memory operand and its associated cache line from all levels of the processor's cache hierarchy. + + + + + serializes load operations. + + + + + non-temporal store of selected bytes from an xmm register into memory. + + + + + serializes load and store operations. + + + + + non-temporal store of double quadword from an xmm register into memory. + + + + + non-temporal store of a doubleword from a general-purpose register into memory. + + + + + non-temporal store of two packed double-precision floating-point values from an xmm register into memory. + + + + improves the performance of spin-wait loops.